将资源字典中的SolidColorBrush绑定到ViewModel

时间:2013-09-26 19:54:05

标签: c# wpf xaml data-binding viewmodel

我有一个颜色的资源字典,其中包含以下行

<SolidColorBrush x:Key="MainProgramBlue" Color="{Binding MainProgramColor}"/>    

然后我将此资源字典合并到App.xaml文件等中,因此在我的视图中,我可以将MainProgramBlue用作StaticResource。如果我实际将颜色放入字典中,如下面的颜色

,一切都有效
<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中的每个地方...想法?

0 个答案:

没有答案