WPF样式不会影响某些属性

时间:2011-01-26 15:43:55

标签: wpf xaml binding styles dynamicresource

我已为Style指定了Paragraph,作为FlowDocumentReader资源部分的一部分:

<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文件,其中包含我的FlowDocument,并且它有一些Paragraph,其定义如下:

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

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

我已经检查了后面代码中的属性值,但是它已设置但不会导致UI中的更改。

如果FlowDocument在运行时加载到FlowDocumentReader,这似乎只是一个问题。如果XAML明确放置在.xaml文件中的FlowDocumentReader内,则Foreground的颜色正确,FontSize会根据属性设置进行更改。

想法?


解决:

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

好吧,我通过将Style块从FlowDocumentReader Resources中移出并转移到FlowDocument本身的Resources部分来解决了这个问题。生成的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>