在另一个LinearGradientBrush中使用LinearGradientBrush?

时间:2010-09-14 12:24:59

标签: wpf silverlight xaml colors color-space

我正在尝试在另一个LinearGradientBrush的Definition中使用一个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”作为“模板”。因此我在两个画笔中都有相同的颜色渐变而没有“&lt; GradientStop”的副本。 ..&gt;“中 - 标记

2 个答案:

答案 0 :(得分:9)

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

<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提供相同的设置。

答案 1 :(得分:2)

分享另一种方式,你不需要创建一个单独的集合,你也可以重用现有的画笔,如

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

这种基于现有画笔创建自定义画笔的方法将特别有助于您扩展预定义的主题,例如Telerik主题,而不是从telerik更改XAML的好方法