0

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

如果我想将该 dll 包含在 2 个不同的项目中,每个项目都为“MyControl”提供自定义样式以使其具有不同的外观,我应该将这些自定义样式放在哪里?

我以为我只需要为每个应用程序创建一个 Themes\Generic.xaml,它定义了自定义样式,但是这样做了,它仍然最终使用 CustomControlLibrary.dll 中定义的样式

4

2 回答 2

0

解决方案是为每个项目定义特定的样式并相应地应用它。
但请记住,您可以使用BasedOn属性创建正确的样式“继承”。毕竟,您应该获得一组您将在MergedDictionaries中管理的样式:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/CustomControlLibrary;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
于 2013-10-27T23:36:06.627 回答
0

您有 CustomControlLibrary.dll,它是 MyControl 的所有者。在该 dll 中,您定义了主题。任何其他可能包含您的 dll 的项目都不需要定义主题。

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

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

检查此链接:

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

于 2013-10-27T23:08:18.593 回答