对多个主题WPF使用单个ResourceDictionary

时间:2012-04-09 14:42:37

标签: wpf xaml resourcedictionary

我有一个具有很多主题的控件,每个主题都由ResourceDictionary表示。问题是字典几乎是相同的,它们只在我声明颜色画笔的开始时有所不同,例如:

<SolidColorBrush x:Key="FirstRd1" Color="#3F555555" />
<SolidColorBrush x:Key="SecondRd1" Color="#00000000" />
<SolidColorBrush x:Key="ThirdRd1" Color="#FF333333" />
<SolidColorBrush x:Key="FourthRd1" Color="#FF000000" />

这些画笔(和其他风格的xaml对象)在这里和那里使用在同一个地方,如下所示:

 <!-- ResourceDictionary 1 -->
 <Border CornerRadius="4"
         Margin="0, 0, 0, 0" 
         BorderThickness="1"
         BorderBrush="{StaticResource FirstRd1}">
         <!-- Some content -->
 </Border>

 <!-- ResourceDictionary 2 -->
 <Border CornerRadius="4"
         Margin="0, 0, 0, 0" 
         BorderThickness="1"
         BorderBrush="{StaticResource FirstRd2}">
         <!-- Some content -->
 </Border>

如何在一个文件中使用不同的画笔移动相同的元素?还有其他元素不依赖于画笔,但它们是嵌套的或具有嵌套的依赖控件。在这种情况下,什么是最好的解决方案,因为我不想为一次虚拟更改编辑15个以上的文件?

1 个答案:

答案 0 :(得分:1)

您可以合并资源词典。在一个文件中声明您的常见内容,然后对于差异化部分,将每个文件都作为自己的文件并将其与公共文件合并。

请参阅http://msdn.microsoft.com/en-us/library/aa350178.aspx