从另一个程序集在WPF中设置UserControl的样式

时间:2010-01-14 12:20:44

标签: wpf user-controls styles resourcedictionary

我在应用程序集中定义了WPF用户控件。我正在尝试根据另一个(皮肤或主题)程序集中的样式设置用户控件的样式。我不希望包含带有所有样式的resourcedictionary的主题/外观程序集引用应用程序程序集。有没有办法做到这一点? E.g。

WPFA应用程序集

MyUserControl.xaml< - WPF用户控件

主题大会

MyStyles.xaml< - WPF资源字典

我假设我可以使用

<Style x:Key="MyStyle">
    <Setter Property="Background" Value="Red" />
</Style>

在MyStyles.xaml资源字典中,并使用:

<l:MyUserControl Name="control" Style="{StaticResource MyStyle}" />

在WPFApplication程序集中使用MyUserControl.xaml的任何窗口

但是,我更希望在MyStyles.xaml资源字典中定位自定义用户控件:

<Style TargetType="{x:Type l:MyUserControl}" x:Key="MyStyle">
        <Setter Property="Background" Value="Red" />
    </Style>

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以做到。 Check this SO post我在其中展示了如何以编程方式执行此操作。我使用的是ControlTemplates,但完全相同的东西也适用于Styles。

要以声明方式执行它可能更简单,您可能必须以编程方式合并您的资源,在xaml中声明正确的StaticResources和名称空间,然后只引用您想要的样式/模板。