关于c#:在FlowDocument中启用嵌入式控件

关于c#:在FlowDocument中启用嵌入式控件

Enabling embedded controls in a FlowDocument

我在标准WPF应用程序窗口中有一个FlowDocument,其中有一些文本,其中有一些超链接和按钮。

问题是,如果我将这个FlowDocument放在FlowDocumentPageViewer之外的任何东西中,则超链接和按钮将被禁用("显示为灰色")。

1
2
3
4
5
6
7
8
9
<FlowDocumentScrollViewer>
  <FlowDocument>
      <Paragraph>
        Hello, World!
        <Hyperlink NavigateUri="some-uri">click me</Hyperlink>
        <Button Click="myButton_Click" Content="Click me too!" />
      </Paragraph>
  </FlowDocument>
</FlowDocumentScrollViewer>

以上内容将起作用,并且该链接将是可单击的。但是,我不希望使用完整的pageviewer,因为它将显示导航按钮(后退/前进)缩放,并且列的行为也很奇怪。

我希望在简单的FlowDocumentScrollViewer中使用它(或其他只显示文本而不会产生额外绒毛的东西)。

编辑:
问题不只是超链接。如果FlowDocument位于FlowDocumentScrollViewer内部,则与IsEnabled属性无关,任何按钮(如Button,ListBox,ComboBox)(用户可以与之交互的任何控件)都会"灰显"。

编辑2:
好吧,这一定是一个错误,或者从我的角度来看是什么,因为我最终重写了控件,现在它可以工作了。我想如果在视觉树中某处IsEnabled = False导致了这种情况,那肯定是某种排序。


我正在使用FlowDocumentScrollViewer作为我的"关于"框:

1
2
3
4
<FlowDocumentScrollViewer VerticalScrollBarVisibility="Auto">
    <FlowDocument>
        <Paragraph>
            <!-- ... -->

我没有您提到的任何控件或问题。


我想知道您是否会遇到这样的事情?

1
2
3
4
<TextBlock>
<Hyperlink>
    <Run Text="Test link"/>
</Hyperlink >

1
</TextBlock>


推荐阅读