从xaml中的一个Brush中引用另一个Brush

时间:2010-10-25 15:39:22

标签: wpf styles resourcedictionary brush

是否可以直接从我的资源字典中的另一个Brush中引用Brush值,而不使用Color定义(或者确切地说,将一个画笔资源复制到另一个画笔中)?

例如,我有一个画笔定义:

<SolidColorBrush x:Key="PanelBackgroundBrush" Color="White"/>

我还有一些其他画笔,我想和“PanelBackgroundBrush”完全相同,就像这样:

<SolidColorBrush x:Key="FolderColor" [BrushToCopy]="{StaticResource PanelBackgroundBrush}"/>

因此“PanelBackgroundBrush”和“FolderColor”都使用白色。

我知道这可以通过使用常见的颜色定义以某种方式实现。

2 个答案:

答案 0 :(得分:30)

我不知道复制画笔本身,但正如你所说,你可以复制画笔的属性:

<SolidColorBrush x:Key="FolderColor" Color="{Binding Color, Source={StaticResource PanelBackgroundBrush}}"/>

以上应该有同样的效果。

答案 1 :(得分:4)

您可以这样做:

<Color x:Key="colorCommon">Red</Color>
<SolidColorBrush x:Key="scb1" Color="{StaticResource colorCommon}" />
<SolidColorBrush x:Key="scb2" Color="{StaticResource colorCommon}" /> 

(请注意,您可以在颜色中指定常规颜色属性。)

但是,如果您只是使用与多个SolidColorBrush对象相同的颜色,我想我会质疑为什么要这样做,除非它是为了将来的灵活性。否则,您只是为自己创建额外的工作和可读性问题。