这是我使用WPF设计UI的第一天。我查了MSDN官方文档 Flow Document ,发现我可以在 RichTextBox 中放置一个UI控件。我确实放了一个按钮,但发现它不能互动 - 我不能点击它,因为它是灰色的。我也尝试了其他控件,它们都显示正常但只是不支持交互。即使是超链接也不起作用。
我通过互联网搜索,有史以来最接近的问题是关于如何使内部超链接可点击:The similar question: C# WPF Text with links
我做了同样的事情,但它没有用!所有组件都显示良好,但无法单击。
这是我的 XAML 代码:
<RichTextBox Grid.Row="1" Margin="14.007,31.067,22.011,46.305" Name="rtxtRslt" BorderBrush="White" >
<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>
任何人都可以给我一些建议: 1.是否有可能使其可点击 2.如果是,如果我忘记设置RichTextBox控件的任何/什么属性?
答案 0 :(得分:9)
首先关闭直接问题:如何使RichTextBox
“活跃”的内容。在IsDocumentEnabled
上将RichTextBox
属性设置为True,如下所示:
<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上有一个特殊属性使嵌入式UI元素处于活动状态,这表明这不是此控件的正常用法。它旨在托管可编辑的FlowDocument内容。因此,RichTextBox的用户通常会创建文档,该文档承载文档的使用者可以单击的按钮,如果这有助于区分清楚我不会知道。 但是,所有这些,默认情况下,您在一个简单的FlowDocumentPageViewer中托管的FlowDocument是活动的。
<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的许多开箱即用功能都不可用。如果您需要UI中的文档功能,FlowDocuments可以提供一个良好的开端,但它们本身带来了相当大的学习曲线。
你问题的标题,如果按字面意思理解,会让我觉得你可能只想要一个WPF UI,它允许你嵌入按钮和超链接并让它们工作(喘气)。这当然是默认行为。如果您不需要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>