Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 是否在另一个LinearGradientBrush中使用LinearGradientBrush?_Wpf_Silverlight_Xaml_Colors_Color Space - Fatal编程技术网

Wpf 是否在另一个LinearGradientBrush中使用LinearGradientBrush?

Wpf 是否在另一个LinearGradientBrush中使用LinearGradientBrush?,wpf,silverlight,xaml,colors,color-space,Wpf,Silverlight,Xaml,Colors,Color Space,我试图在另一个LinearGradientBrush的定义中使用一个LinearGradientBrush。但我不知道这会不会奏效,如果奏效,我需要知道怎么做 例如: <LinearGradientBrush x:Key="ComboBoxFocusBackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FFFDEEB3" Offset="0"/>

我试图在另一个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>

//这里的代码使用ComboBoxFocusBackgroundBrush
感谢您期待您的回答

编辑:
为了使示例中的内容更清晰,我想使用“FilterPopupTitleBrush”中的“ComboBoxFocusBackgroundBrush”作为“模板”。这样,我在两个画笔中都有相同的颜色渐变,而没有“-标记”的副本,您可以在多个画笔之间共享渐变停止列表,如下所示:-

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

现在,您可以改变
端点
起点
和其他属性,以创建相同基本渐变的不同变体


您甚至可以向
RadialGradientBrush
提供相同的设置

共享另一种方法,您不需要创建单独的集合,也可以像以前一样重用现有的笔刷

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


这种基于现有画笔创建自定义画笔的方法特别有助于扩展预定义主题,如
Telerik
themes,当我试图在Silverlight 4 ResourceDictionary中定义GradientStopCollection时,我得到一个“值不在预期范围内”错误,知道为什么吗?Silverlight 5也是如此。首先以编程方式找到它,然后尝试使用这个XAML标记,得到了相同的结果。这是一个极好的答案。