覆盖控件样式

时间:2013-10-27 22:07:29

标签: wpf styles themes override

根据默认的自动设置,我创建了一个CustomControlLibrary.dll,其中包含一个Control(MyControl),其样式位于Themes文件夹的Generic.xaml中。

如果我想在两个不同的项目中包含该dll,每个项目都为“MyControl”提供自定义样式以赋予它不同的外观,我在哪里放置这些自定义样式?

我认为我必须为每个应用程序安装一个Themes \ Generic.xaml,它定义了自定义样式,但是在完成此操作后,它仍然使用CustomControlLibrary.dll中定义的样式

2 个答案:

答案 0 :(得分:0)

您有CustomControlLibrary.dll,它是MyControl的所有者。在那个dll中你定义了你的主题。任何其他可能包含您的dll的项目都无法定义主题。

其他项目可以在其窗口资源中为MyControl定义其自定义样式。例如。

样式可以在任何级别定义。 :)

检查此链接:

http://msdn.microsoft.com/en-us/library/ms745683.aspx

答案 1 :(得分:0)

解决方案是为每个项目定义特定的样式并相应地应用它 但请记住,你可以创造适当的风格"继承"使用BasedOn属性。毕竟,您应该获得一组您在MergedDictionaries中管理的样式:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/CustomControlLibrary;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>