30

我正在为应用程序创建一些包含所有样式的 wpf 资源字典!我有几个LinearGradientBrushes,其中颜色直接在LinearGradientBrush参考中设置为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>

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

Cannot convert the value in attribute 'Color' to object of type 'System.Windows.Media.Color'. '#5A5A5A' is not a valid value for property 'Color'.  

它所指的行<GradientStop Color="{StaticResource colorbrushMedium}"/>是定义的行。

有任何想法吗?

4

2 回答 2

37

好的,我发现了问题:

使用颜色而不是 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>

这似乎解决了我的问题!

于 2009-12-02T10:34:21.837 回答
15

用于Binding引用 inSolidColorBrush和 in 中的颜色LinearGradientBrush

<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>
于 2016-03-15T17:59:26.870 回答