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

发布于 2024-08-13 08:14:26 字数 952 浏览 1 评论 0原文

我正在创建一些 wpf 资源字典,其中包含应用程序的所有样式!我有一些 LinearGradientBrushes,其中颜色直接在 LinearGradientBrush 引用中设置为 GradientStops。但是,我希望有一组预定义的颜色,可以为每个 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'.  

它引用的行是 所在的行定义的。

有什么想法吗?

I am creating some wpf resource dictionaries with all the styles for an application! I have a few LinearGradientBrushes, where the color is set directly in the LinearGradientBrush reference as GradientStops. However, I want to have a predefined set of colors that I can use a a reference for each GradientStop, so that changing the color scheme for the application is a matter of changing the values of the 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>

With the code example above, I am getting the following error:

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

The line it refers to is the line where <GradientStop Color="{StaticResource colorbrushMedium}"/> is defined.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぃ弥猫深巷。 2024-08-20 08:14:26

好的,我发现了问题:

使用 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>

这似乎解决了我的问题!

Ok, I found the problem:

Using Color and not 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>

This seems to solve my problem!

稚气少女 2024-08-20 08:14:26

使用 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>

Use Binding to reference the color both in SolidColorBrush and 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文