我有一个带有以下行的颜色资源字典
<SolidColorBrush x:Key="MainProgramBlue" Color="{Binding MainProgramColor}"/>
然后,我将此资源字典合并到 App.xaml 文件等中,因此在我看来,我可以将 MainProgramBlue 用作静态资源。如果我实际上将颜色像以下颜色一样放入字典中,一切正常
<SolidColorBrush x:Key="LightGrey" Color="#D5D5D5"/>
但我想将颜色绑定到这样的视图模型
public class ThemeViewModel : NotificationObject
{
public ThemeViewModel()
{
MainProgramColor = (SolidColorBrush)(new BrushConverter().ConvertFrom( "#F79218" ));
}
private SolidColorBrush mMainProgramColor;
/// <summary>
///
/// </summary>
public SolidColorBrush MainProgramColor
{
get
{
return mMainProgramColor;
}
set
{
mMainProgramColor = value;
Notify( "MainProgramColor" );
}
}
}
但是视图模型似乎没有将 MainProgramBlue 设置为我想要的颜色。绑定不起作用。即使我这样做
<Grid Background="{Binding MainProgramColor}">
绑定有效,我的网格背景设置为 ViewModel 中的颜色。为什么视图模型绑定在colors.xaml 资源字典中不起作用?甚至有可能做到这一点吗?
我有一个使用大约 5 种颜色的程序,现在它们是硬编码的,但我想将它们全部绑定到属性,以便用户可以设置自己的颜色和主题,我想将它们绑定到资源字典中而不是绑定他们在 xaml 中的每一个地方......想法?