Использовать LinearGradientBrush в другой LinearGradientBrush? - PullRequest
7 голосов
/ 14 сентября 2010

Я пытаюсь использовать один 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>

благодарю вас в ожидании ваших ответов

Edit: Чтобы разобраться в этом примере, я хочу использовать «ComboBoxFocusBackgroundBrush» в «FilterPopupTitleBrush» в качестве «шаблона». Так что у меня одинаковый градиент цвета в обеих кистях без копии « "- метки

Ответы [ 2 ]

9 голосов
/ 14 сентября 2010

Вы можете поделиться списком градиентных остановок между несколькими кистями, например так: -

<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}" /> 

Теперь вы можете изменять EndPoint, StartPoint и другие свойства, создавая разные варианты одного и того же базового градиента.

Вы можете даже поставить тот же набор на RadialGradientBrush.

2 голосов
/ 24 августа 2012

Предоставляя другой способ сделать это, вам не нужно создавать отдельную коллекцию, вы также можете повторно использовать существующую кисть, например

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

Этот способ создания настраиваемой кисти на основе существующей кисти будетособенно полезно, когда вы хотите расширить предопределенные темы, такие как Telerik темы, где было бы неуместно менять XAML на telerik.

...