【发布时间】:2016-07-01 19:43:09
【问题描述】:
我在 App.xaml 中有一个 SolidColorBrush 资源,如下所示:
<SolidColorBrush Color="#73AF00" x:Key="BaseGreen"></SolidColorBrush>
我所有的样式(按钮、网格背景颜色等)都包含该资源,我希望当用户更改颜色设置时,整个应用颜色将变为蓝色。
var color = System.Windows.Application.Current.Resources["BaseGreen"] as SolidColorBrush;
color.Color = Color.FromRgb(41, 128, 185);
I try what this answer suggest 但是当我赋值时,抛出异常:
This property is set to read only and cannot be set
我也尝试过,但没有任何反应:
var color = this.TryFindResource("BaseGreen") as SolidColorBrush;
color = new SolidColorBrush(Color.FromRgb(41, 128, 185));
我有什么遗漏的吗?
【问题讨论】:
-
这是预期的行为。您应该交换资源,而不是属性。是在同一个字典中交换资源字典或其他资源。那里有很多关于动态主题的精彩文章,人们花了很多时间在上面进行更详细的解释。
标签: c# wpf xaml resourcedictionary