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中有一个MessageMessageColor属性,将项目文本的颜色绑定到我指定的颜色的正确XAML语法是什么?

         

TextBlock Foreground期望Brush不是Color 。 像WPF中的很多东西一样,有很多方法可以解决这个问题。 这是一对夫妇:

  1. 将viewModel中的MessageColor属性更改为Brush

     Brush MessageColor {get;set;} 
  2. 创建一个SolidColorBrush并将其绑定到您的颜色

           
  3. 创建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中,将转换器创建为静态资源

    

在绑定中使用它

  

祝好运