UserControls可以在Silverlight中具有隐式样式吗?

时间:2011-05-31 21:51:57

标签: c# silverlight xaml

解决方案:UserControl不是实际类型,因此我不能在usercontrols上使用Implicit Styles。谢谢蒂姆。

以下隐式风格似乎没有做任何事情。

<Style TargetType="UserControl">
    <Setter Property="FontFamily" Value="Webdings"/>
    <Setter Property="Foreground" Value="Red"/>
</Style>

我知道样式会加载到Apps资源字典中,因为如果我在同一个.xaml文件中明确设置了另一种样式,它就可以正常工作。

示例:

<Style TargetType="Control" x:Key="BaseStyle">
    <Setter Property="FontFamily" Value="Webdings"/>
</Style>

如果我在标签中放置Style =“{StaticResource BaseStyle}”,则工作正常。 谢谢 -Shane

1 个答案:

答案 0 :(得分:2)

您需要指定控件的实际类型,而不是仅使用UserControl。隐式样式仅适用于特定类型。所以而不是:

<Style TargetType="UserControl">    
    <Setter Property="FontFamily" Value="Webdings"/>    
    <Setter Property="Foreground" Value="Red"/>
</Style>
你会用:

<Style TargetType="my:MyUserControl">    
    <Setter Property="FontFamily" Value="Webdings"/>    
    <Setter Property="Foreground" Value="Red"/>
</Style>

其中my被声明为您的命名空间,MyUserControl是UserControl派生控件的实际类名。