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

本文关键字:MVVM 设置 系统资源 WPF | 更新日期: 2023-09-27 18:05:02

我有这个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"));
    }
}

绑定工作良好与SolidColorBrush作为System.Windows.SystemColors.ControlTextBrush,但问题开始时,主题更改为黑暗。所以我需要用System.Windows.SystemColors.ControlTextBrushKey。现在我找不到任何可以帮助我的资源。FrameworkElement.SetResourceReference方法可以做到这一点,但我没有从MVVM的角度看到这一点。那么,有什么方法可以将这个动态资源设置为我的控制呢?

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

试试这个:-

LogColor = (Brush)Application.Current.FindResource(
                     System.Windows.SystemColors.ControlTextBrushKey);