WPF DataGrid Item 背景颜色Binding

工作中需要用到一个很有意思的Binding,根据Datagrid数据源某一列的值使得Datagrid不同Item的背景颜色不同

效果如下:

WPF DataGrid Item 背景颜色Binding_第1张图片

 

首先使用的数据源集合是ObservableCollection可以自动通知属性变化,定义一个实体类Test,里面位Age属性定义了通知,便于更新

    class Test: INotifyPropertyChanged
    {
        private string age;
        public string Name { get; set; }
        public string Age 
        {
            get 
            {
                return age;
            } 
            set
            {
                age = value;
                OnPropertyChanged("Age");
            } 
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string propertyName = "")
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }

    }

由于我想把每一个条目的背景颜色绑定到Age属性,所以需要一个Converter

代码如下

    class WorkItemBackgroundConverter :IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value.ToString().Contains("."))
            {
                return Brushes.Bisque;
            }
            else
            {
                return Brushes.LightBlue;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }

接着看看布局界面的情况,里面的东西很简单,只有一个datagrid,在datagrid资源进行了一个转换器引进

        
            
            
        
        
        
            
                
                
            
     

            
                
                
            
        

 

你可能感兴趣的:(WPF,C#)