0

作为我的资源部分的一部分,我有一个Style指定的 for :ParagraphFlowDocumentReader

<FlowDocumentReader>
   <FlowDocumentReader.Resources>
      <Style x:Key="myStyle" TargetType="{x:Type Paragraph}">
         <Setter Property="Foreground" Value="LightSteelBlue" />
         <Setter Property="BorderBrush" Value="LightSteelBlue" />
         <Setter Property="BorderThickness" Value="1.0" />
         <Setter Property="FontStyle" Value="Italic" />
         <Setter Property="FontSize" Value="{Binding Path=MyFontSize}" />
      </Style>
   </FlowDocumentReader.Resources>
</FlowDocumentReader>

我有一个 .xaml 文件,其中包含 myFlowDocument并且它有一些Paragraph定义如下:

<Paragraph Style='{DynamicResource myStyle}">
    Stuff here
</Paragraph>

我遇到的问题是Foreground不适用于文本(它显示为黑色而不是 LightSteelBlue),并且在修改属性FontSize时不会改变。MyFontSize

我检查了后面代码中的属性值并设置了它,但它不会导致 UI 发生变化。

FlowDocument如果它FlowDocumentReader在运行时加载到,这似乎只是一个问题。如果 XAML 显式放置在FlowDocumentReader.xaml 文件中,则Foreground它是正确的颜色,并且FontSize基于属性设置的更改。

想法?


解决了:

正如我在下面的回答中所写,通过将Style块移动到其本身的资源部分FlowDocument可以解决问题。

4

2 回答 2

0

您是否尝试过直接为您的段落设置前景?它必须是管理内容前景的不同属性/附加属性。

于 2011-01-26T15:57:49.760 回答
0

好吧,我通过将 Style 块从 FlowDocumentReader 资源中移出并移到 FlowDocument 本身的资源部分来解决了这个问题。生成的 FlowDocument 看起来像这样:

<FlowDocument>
   <FlowDocument.Resources>
      <Style x:Key="myStyle" TargetType="{x:Type Paragraph}">
         <Setter Property="Foreground" Value="LightSteelBlue" />
         <Setter Property="BorderBrush" Value="LightSteelBlue" />
         <Setter Property="BorderThickness" Value="1.0" />
         <Setter Property="FontStyle" Value="Italic" />
         <Setter Property="FontSize" Value="{Binding Path=MyFontSize}" />
      </Style>
   </FlowDocument.Resources>
   <Paragraph Style="{DynamicResource myStyle}">
      Stuff here
   </Paragraph>
</FlowDocument>
于 2011-01-26T18:49:25.000 回答