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

3
我有一个在应用程序程序集中定义的WPF用户控件。我正在尝试基于另一个(皮肤或主题)程序集中的样式为用户控件设置样式。我不希望包含所有样式的资源字典的主题/皮肤程序集引用应用程序程序集。有没有办法做到这一点?例如,
WPF应用程序集
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个回答

1

是的,你可以做到。查看这个SO帖子,我展示了如何以编程方式实现它。我使用ControlTemplates来完成,但同样的方法也适用于Styles。

声明性地完成可能更简单,你可能需要以编程方式合并你的资源字典,在你的xaml中声明正确的StaticResources和命名空间,然后只需引用你想要的样式/模板即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接