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>

这可能吗??

4

1 回答 1

1

是的,你可以做到。检查this SO post,我在其中展示了如何以编程方式进行操作。我是用 ControlTemplates 做的,但同样的事情也适用于 Styles。

要以声明方式执行此操作可能更简单,您可能必须以编程方式合并资源字典,在 xaml 中声明正确的静态资源和命名空间,然后仅引用所需的样式/模板。

于 2010-01-14T12:31:21.343 回答