【问题标题】:Use a LinearGradientBrush in another LinearGradientBrush?在另一个 LinearGradientBrush 中使用 LinearGradientBrush?
【发布时间】:2011-04-12 03:36:15
【问题描述】:

我正在尝试在另一个 LinearGradientBrush 的定义中使用一个 LinearGradientBrush。但我不知道这是否可行,如果可行,我需要知道如何。

例如:

    <LinearGradientBrush x:Key="ComboBoxFocusBackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FFFDEEB3" Offset="0"/>
        <GradientStop Color="#FFFBF2CD" Offset="1"/>
        <GradientStop Color="#FFFCE48A" Offset="0.5"/>
        <GradientStop Color="#FFFBE388" Offset="0.75"/>
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="FilterPopupTitleBrush" EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#B45988" Offset="0.75"/>
        //Code here to use ComboBoxFocusBackgroundBrush
        <GradientStop Color="#990088" Offset="0.75"/>
    </LinearGradientBrush>

感谢您期待您的回答

编辑: 为了在示例中更清楚一点,我想在“FilterPopupTitleBrush”中使用“ComboBoxFocusBackgroundBrush”作为“模板”。这样我在两个画笔中都有相同的颜色渐变,而没有“"-标签

【问题讨论】:

  • 不太清楚你想做什么...

标签: wpf silverlight xaml colors color-space


【解决方案1】:

您可以在多个画笔之间共享渐变停止列表,如下所示:-

<GradientStopCollection x:Key="MyGradient">
    <GradientStop Color="#FFFDEEB3" Offset="0"/> 
    <GradientStop Color="#FFFBF2CD" Offset="1"/> 
    <GradientStop Color="#FFFCE48A" Offset="0.5"/> 
    <GradientStop Color="#FFFBE388" Offset="0.75"/> 
</LinearGradientBrush> 

<LinearGradientBrush x:Key="ComboBoxFocusBackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0"
   GradientStops="StaticResource MyGradient}" /> 

<LinearGradientBrush x:Key="FilterPopupTitleBrush" EndPoint="0.5,1" StartPoint="0.5,0"
    GradientStops="{StaticResource MyGradient}" /> 

现在您可以通过改变EndPointStartPoint 和其他属性来创建相同基本渐变的不同变体。

您甚至可以将相同的集合提供给RadialGradientBrush

【讨论】:

  • 当我尝试在 Silverlight 4 ResourceDictionary 中定义 GradientStopCollection 时,我收到“值不在预期范围内”错误,知道为什么吗?
  • 这里与 Silverlight 5 相同。首先以编程方式找到它,然后尝试使用此 XAML 标记并得到相同的结果。
【解决方案2】:

分享另一种方式,不需要单独创建集合,也可以像重用已有的画笔一样

<LinearGradientBrush x:Key="FilterPopupTitleBrush" GradientStops="{Binding GradientStops, Source={StaticResource ComboBoxFocusBackgroundBrush}}"/>

这种基于现有画笔创建自定义画笔的方式在您想要扩展预定义主题(如 Telerik 主题)时特别有用,在这种情况下,从 telerik 更改 XAML 并不是一个好方法。

【讨论】:

  • 这是一个绝妙的答案。
猜你喜欢
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多