Прежде всего, ваш прямой вопрос: как сделать содержимое RichTextBox
"активным". Установите для свойства IsDocumentEnabled
значение True для RichTextBox
, как показано здесь:
<RichTextBox Grid.Row="1" Margin="14.007,31.067,22.011,46.305" Name="rtxtRslt" BorderBrush="White"
IsDocumentEnabled="True">
<FlowDocument>
<Section FontSize="15">
<Paragraph>
<Bold>Click on this:</Bold>
<Italic>
<Hyperlink NavigateUri="http://stackoverflow.com">http://www.jxitc.info</Hyperlink>
</Italic>
</Paragraph>
<BlockUIContainer>
<Button Click="Button_Click" >Also Click On This</Button>
</BlockUIContainer>
</Section>
</FlowDocument>
</RichTextBox>
Теперь к невысказанному вопросу: вам вообще нужно быть в RichTextBox? Тот факт, что в RichTextBox есть специальное свойство, позволяющее сделать встроенные элементы пользовательского интерфейса активными, указывает на то, что это ненормальное использование для этого элемента управления. Он предназначен для размещения редактируемого содержимого FlowDocument. Таким образом, пользователь RichTextBox обычно создает документ, в котором находится кнопка, которую потребитель может щелкнуть , если это поможет прояснить различие, которого я не знаю.
Однако, несмотря на это, ваш FlowDocument, размещенный вместо этого в простом FlowDocumentPageViewer, активен по умолчанию.
<FlowDocumentPageViewer>
<FlowDocument>
<Section FontSize="15">
<Paragraph>
<Bold>Click on this:</Bold>
<Italic>
<Hyperlink NavigateUri="http://stackoverflow.com">http://www.jxitc.info</Hyperlink>
</Italic>
</Paragraph>
<BlockUIContainer>
<Button Click="Button_Click" >Also Click On This</Button>
</BlockUIContainer>
</Section>
</FlowDocument>
</FlowDocumentPageViewer>
Теперь к другому невысказанному вопросу (невыразимый?), Вам вообще нужно быть в контенте FlowDocument? Содержимое FlowDocument аналогично, но не получено из UIElement. Таким образом, многие из готовых функций UIElements недоступны. Если вам нужна функциональность документа в пользовательском интерфейсе, FlowDocuments может обеспечить отличное начало, но принесет с собой довольно большую кривую обучения.
Название вашего вопроса, если его понимать буквально, заставляет меня думать, что вы, возможно, просто хотите, чтобы пользовательский интерфейс WPF позволял вставлять кнопки и гиперссылки и заставить их работать (задыхаться). Это, безусловно, поведение по умолчанию. Если вам не нужен внешний вид документа, который обеспечивает FlowDocument, или редактирование документа в реальном времени, которое предоставляет RichTextBox, вы можете рассмотреть более «традиционный» макет WPF.
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch"
Margin="20">
<TextBlock>
<Bold>Click on this:</Bold>
<Italic>
<Hyperlink NavigateUri="http://stackoverflow.com">http://www.jxitc.info</Hyperlink>
</Italic>
</TextBlock>
<Button Click="Button_Click"
Margin="0,20,0,0">Also Click On This</Button>
</StackPanel>