0

我有一个带有以下行的颜色资源字典

<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 中的每一个地方......想法?

4

0 回答 0