我正在创建一些包含应用程序所有样式的wpf资源字典!我有几个LinearGradientBrush
es,其中颜色直接在L inearGradientBrush
引用中设置为GradientStop
s。但是,我希望有一组预定义的颜色,我可以使用每个GradientStop
的引用,以便更改应用程序的颜色方案是更改SolidColorBrush
es的值:
<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}"/>
的行。
有什么想法吗?
答案 0 :(得分:31)
好的,我发现了问题:
使用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>
这似乎解决了我的问题!
答案 1 :(得分:9)
使用Binding
引用SolidColorBrush
和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>