我有这个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点上看不出来。
那么有什么方法可以将这个动态资源设置为我的控件吗?
答案 0 :(得分:1)
试试这个: -
LogColor = (Brush)Application.Current.FindResource(
System.Windows.SystemColors.ControlTextBrushKey);