在WPF中通过MVVM设置系统资源

时间:2016-09-01 09:40:55

标签: c# wpf mvvm

我有这个ViewModel,其中包含以下属性

private SolidColorBrush _Color;

public SolidColorBrush LogColor
{
    get { return _Color; }
    set
    {
        _Color = value;
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LogColor"));
    }
}


private LogType _Logtype;

public LogType Logtype
{
    get { return _Logtype; }
    set
    {
        _Logtype = value;
        switch (value)
        {
            case LogType.Info:
                LogColor = System.Windows.SystemColors.ControlTextBrush;
                break;
            case LogType.Warning:
                LogColor = new SolidColorBrush(Colors.YellowGreen);
                break;
            case LogType.Error:
                LogColor = new SolidColorBrush(Colors.Red);
                break;
            case LogType.Success:
                LogColor = new SolidColorBrush(Colors.LawnGreen);
                break;
            default:
                LogColor = System.Windows.SystemColors.ControlTextBrush;
                break;
        }
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Logtype"));
    }
}

Binding与SolidColorBrush一起工作正常System.Windows.SystemColors.ControlTextBrush但问题在主题变为黑暗时开始。所以我需要使用System.Windows.SystemColors.ControlTextBrushKey。现在我无法找到任何可以帮助我解决问题的资源。 FrameworkElement.SetResourceReference方法会这样做,但我从MVVM点上看不出来。 那么有什么方法可以将这个动态资源设置为我的控件吗?

1 个答案:

答案 0 :(得分:1)

试试这个: -

LogColor = (Brush)Application.Current.FindResource(
                     System.Windows.SystemColors.ControlTextBrushKey);
相关问题
最新问题