在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的角度看到这一点。那么,有什么方法可以将这个动态资源设置为我的控制呢?
试试这个:-
LogColor = (Brush)Application.Current.FindResource(
System.Windows.SystemColors.ControlTextBrushKey);