【发布时间】:2014-01-22 01:20:01
【问题描述】:
如何在运行时更改另一个资源字典中正在使用的资源字典中的颜色?
这是我的设置:
Colours.xaml:
<SolidColorBrush x:Key="themeColour" Color="#16A8EC"/>
Styles.xaml:
<Style x:Key="titleBar" TargetType="Grid">
<Setter Property="Background" Value="{DynamicResource themeColour}"/>
</Style>
Window.xaml
.....
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="res/Styles.xaml"/>
<ResourceDictionary Source="res/Colours.xaml"/>
</ResourceDictionary.MergedDictionaries>
.....
<Grid Style="{DynamicResource titleBar}"></Grid>
背后的代码:
Application.Current.Resources["themeColour"] = new SolidColorBrush(newColour);
当代码运行时,网格的颜色不会改变。我不认为 Application.Current.Resources["themeColour"] 指的是我的solidcolorbrush 资源,因为如果我在为其分配新颜色之前尝试访问它,我会得到一个空对象引用异常。
那么,我应该如何访问资源“themeColour”?
【问题讨论】: