为什么我的TextBlock样式不会继承我的基本样式?

时间:2015-04-17 11:21:40

标签: c# wpf xaml

我有一个基础风格

<Style x:Key="BaseFontControl" TargetType="{x:Type Control}">
    <Setter Property="FontSize" Value="13"/>
</Style>

和TextBlock Style,我不能将上面的Style用作基本样式。它说Target type TextBlock is not convertable to base type Control。我该如何解决这个问题?

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="../XAMLStyles/BaseFontControl.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="TextStyle" BasedOn="{StaticResource FontControl}" TargetType="{x:Type TextBlock}">
    <Setter Property="TextWrapping" Value="Wrap"/>
    <Setter Property="FontFamily" Value="DroidSans"/>
    <Setter Property="Foreground" Value="#000000" />
</Style>

1 个答案:

答案 0 :(得分:2)

TextBlock不是来自Control,因此定位TextBlock的样式不能基于定位Control的样式。

您可以将基本样式更改为定位FrameworlElement

<Style x:Key="BaseFontControl" TargetType="FrameworkElement">
    <Setter Property="TextBlock.FontSize" Value="13"/>
</Style>

此方法利用了TextBlock.FontSizeControl.TextBlock属性使用相同依赖项属性的事实。因此,它还设置了从FontSize派生的元素的Control属性。