在另一个 LinearGradientBrush 中使用 LinearGradientBrush?

问题描述 投票:0回答:3

我正在尝试在另一个 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
3个回答
10
投票

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

<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
提供相同的套件。


3
投票

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

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

这种基于现有画笔创建自定义画笔的方法将非常有用,特别是当您想要扩展预定义主题(例如

Telerik
主题)时,从 telerik 更改
XAML
并不是一个好方法。


0
投票

无法在 UWP 中工作,出现系统错误

无法分配属性 'Windows.UI.Xaml.Media.GradientBrush.GradientStops'

© www.soinside.com 2019 - 2024. All rights reserved.