如何从资源字典继承/扩展样式?

时间:2010-09-01 15:30:12

标签: .net wpf xaml wpf-controls app.xaml

我无法扩展我在Windows词典中定义的一种样式。单独,似乎按预期将样式应用于我的控件。但是,如果尝试使用basedOn属性扩展我的一个userControl中的样式,它只会覆盖主要样式,并且所有基本样式都会消失。这是一个例子:

在资源字典中,名为dict1.xaml:

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Pink"/>
</Style>  

在主窗口中.xaml:

<Window.Resources>
    <ResourceDictionary Source="dict1.xaml"/>
</Window.Resources>

在名为userControl1.xaml的用户控件中:

<UserControl.Resources>
    <Style  BasedOn="{StaticResource {x:Type Button}}" 
            TargetType="{x:Type Button}">
        <Setter Property="FontWeight" Value="Bold"/>
    </Style>
</UserControl.Resources>

用户控件中的样式只是覆盖资源字典中的样式,字体为Bold。如果我删除用户控件中的样式,字典中的样式将启动并且背景变为粉红色。我想要两个。

我在这里做错了什么想法?

感谢。

1 个答案:

答案 0 :(得分:1)

您需要将字典添加到UserControl资源,或将其添加到App.XAML资源。

实际上,UserControl无法解析那个StaticResource - 如果有意义的话,它就在UserControl的范围内,而不是窗口。