我创建了一个名为baseStyle的样式,如下所示:
<Style TargetType="{x:Type Control}" x:Key="baseStyle">
<Setter Property="FontSize" Value="30" />
<Setter Property="FontFamily" Value="Saumil_guj2" />
</Style>
然后我将它用于ListBoxItem,如:
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource baseStyle}">
</Style>
很高兴接受来自FontSize
的{{1}}和FontFamily
。
我试图为TextBlock做类似的事情:
baseStyle
现在抱怨。我的意思是它给了我一个例外:
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource baseStyle}">
</Style>
所以,我在MSDN上查了一下。
我发现ListBoxItem间接地从System.Windows.Controls派生。它可以找到here。
在那里我还发现TextBlock也派生自System.Windows.Controls。它可以找到here。
所以,我不明白为什么会出现这个错误?
答案 0 :(得分:16)
正如评论TextBlock
中所述,并非来自Control
,而是直接来自FrameworkElement
。 TextBlock
和Control
之间没有FontSize
和FontFamily
的公共类。他们都分开实施。你可以做什么为FrameworkElement
创建设置附加属性TextElement.FontSize
和TextElement.FontFamily
<Style TargetType="{x:Type FrameworkElement}" x:Key="baseStyle">
<Setter Property="TextElement.FontSize" Value="30" />
<Setter Property="TextElement.FontFamily" Value="Saumil_guj2" />
</Style>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource baseStyle}">
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource baseStyle}">
</Style>