WPF绑定:根据属性设置列表框项文本颜色
我敢肯定这可能是WPF中的基本内容,但我是XAML语法的新手,我正试图绕过它。
安装程序
我有一个LogItem
类型 – 只是一个POCO:
public class LogItem { public string Message {get;set;} public Color MessageColor {get;set;} }
和我的ViewModel中的LogItem
列表:
private ObservableCollection _logItems; public ObservableCollection LogItems { get { return _logItems; } set { if (value != _logItems) { _logItems = value; OnPropertyChanged("LogItems"); } } }
我的viewmodel绑定到视图,以便我可以执行以下操作:
(显然我还是要设置显示文本绑定等)
问题
鉴于我在LogItems中有一个Message
和MessageColor
属性,将项目文本的颜色绑定到我指定的颜色的正确XAML语法是什么?
TextBlock Foreground
期望Brush
不是Color
。 像WPF中的很多东西一样,有很多方法可以解决这个问题。 这是一对夫妇:
-
将viewModel中的
MessageColor
属性更改为Brush
Brush MessageColor {get;set;}
-
创建一个
SolidColorBrush
并将其绑定到您的颜色 -
创建
ColorToBrushConverter
public class ColorToBrushConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) return Brushes.Black; // Default color Color color = (Color)value; return new SolidColorBrush(color); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion }
在xaml中,将转换器创建为静态资源
在绑定中使用它
祝好运