【问题标题】:Reference to another Brush from one Brush in xaml从 xaml 中的一个画笔引用另一个画笔
【发布时间】:2011-04-30 07:06:21
【问题描述】:

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

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

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

我还有一些其他的画笔,我希望与“PanelBackgroundBrush”完全相同,如下所示:

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

所以“PanelBackgroundBrush”和“FolderColor”都使用白色。

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

【问题讨论】:

    标签: wpf styles resourcedictionary brush


    【解决方案1】:

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

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

    上面应该有同样的效果。

    【讨论】:

    • 对于 LinearGradientBrush 你可以这样做:
    • 在这里工作得很好。如果我将每个 Color 资源都更改为 SolidColorBrush 因为我可以通过这种方式引用,那会是一个糟糕的选择吗?
    【解决方案2】:

    你可以这样做:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-13
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      相关资源
      最近更新 更多