使用StaticResource SolidColorBrush定义渐变停止颜色

cod*_*oop 29 wpf resources xaml colors brushes

我正在创建一些包含应用程序所有样式的wpf资源字典!我有一些LinearGradientBrushes,其中颜色直接在L inearGradientBrush参考中设置为GradientStops.但是,我希望有一组预定义的颜色,我可以为每个颜色使用一个引用GradientStop,这样更改应用程序的颜色方案就是更改SolidColorBrushes 的值:

<SolidColorBrush Color="#5A5A5A" x:Key="colorbrushMedium" /> 
<SolidColorBrush Color="#222222" x:Key="colorbrushDark" />  


<LinearGradientBrush>
    <GradientStop Color="{StaticResource colorbrushMedium}"/>
    <GradientStop Color="{StaticResource colorbrushDark}" Offset="1"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)

使用上面的代码示例,我收到以下错误:

Cannot convert the value in attribute 'Color' to object of type 'System.Windows.Media.Color'. '#5A5A5A' is not a valid value for property 'Color'.  
Run Code Online (Sandbox Code Playgroud)

它引用的行<GradientStop Color="{StaticResource colorbrushMedium}"/>是定义的行.

有任何想法吗?

cod*_*oop 33

好的,我发现了问题:

使用Color而不是SolidColorBrush ..

<Color x:Key="colorbrushMedium">#FF5A5A5A</Color>
<Color x:Key="colorbrushDark">#FF222222</Color>
<LinearGradientBrush>
    <GradientStop Color="{StaticResource colorbrushMedium}"/>
    <GradientStop Color="{StaticResource colorbrushDark}" Offset="1"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)

这似乎解决了我的问题!

  • 如果您还需要对需要SolidColorBrush的属性使用相同的颜色,该怎么办? (5认同)

sun*_*oon 11

使用Binding引用的颜色都在SolidColorBrushLinearGradientBrush:

<SolidColorBrush x:Key="stop1" Color="#FF5A5A5A"/>
<SolidColorBrush x:Key="stop2" Color="#FF222222"/>

<LinearGradientBrush x:Key="gradient">
  <GradientStop Color="{Binding Source={StaticResource stop1},Path=Color}" Offset="0"/>
  <GradientStop Color="{Binding Source={StaticResource stop2},Path=Color}" Offset="1"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)