Datagrid绑定到列表,ColorConverter未更新

时间:2019-04-19 23:04:41

标签: wpf mvvm

我有一个DataGrid,其中每一行都绑定到一个ObservableCollection。当我从采集设备接收数据时,我将替换集合中的值。当我运行它时,我看到数据实时更改,因此该部分看起来不错。我添加了一个绑定到单元格列之一的ColorConverter,因此它将根据单元格的值设置背景色。使用ColorConverter中的断点,我看到它在首次初始化DataGrid时运行,但此后再也不会运行。我希望ColorConverter每次更新值时都能运行,以便背景颜色更新。

在我的视图模型中....

公共类SensorRowData:INotifyPropertyChanged  {

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged<T>(Expression<Func<T>> exp)
        {
            var memberExpression = (MemberExpression)exp.Body;
            string propertyName = memberExpression.Member.Name;

            var propertyChanged = PropertyChanged;
            if (propertyChanged != null)
            {
                propertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        public int ChannelNumber { get; set; }

        private ObservableCollection<int> m_List_Values { get; set; }
        public ObservableCollection<int> List_Values
        {
            get { return m_List_Values; }

            set
            {
                m_List_Values = value;
                OnPropertyChanged(() => List_Values);
            }
        }

        public SensorRowData()
        {
            ChannelNumber = 0;
            List_Values = new ObservableCollection<int>();
            List_Values.Add(0);
            List_Values.Add(0);
            List_Values.Add(0);
            List_Values.Add(0);
        }
    }


    private ObservableCollection<SensorRowData> m_List_ValuesCounts { get; set; }
    public ObservableCollection<SensorRowData> List_ValuesCounts
    {
        get { return m_List_ValuesCounts; }

        set
        {
            m_List_ValuesCounts = value;
            OnPropertyChanged(() => List_ValuesCounts);
        }
    }

XAML ....

 <DataGrid 
                x:Name="ValuesDataGrid"
                ItemsSource="{Binding List_ValuesCounts}" 
                AutoGenerateColumns="False"
                Height="225"
                Margin="0,25,0,0" VerticalAlignment="Top" >

                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding ChannelNumber}" Header="Channel"/>
                    <DataGridTextColumn Binding="{Binding List_Values[0]}" Header="Q1 P" Width="*"/>
                    <DataGridTextColumn Binding="{Binding List_Values[1]}" Header="Q2 L" Width="*"/>
                    <DataGridTextColumn Binding="{Binding List_Values[2]}" Header="Q3 A" Width="*"/>
                    <DataGridTextColumn Binding="{Binding List_Values[3]}" Header="Q4 R" Width="*">
                        <DataGridTextColumn.CellStyle>
                            <Style>
                                <Setter Property="Border.Background" Value="{Binding Converter={StaticResource AcquisitionColorConverter}}" />
                            </Style>
                        </DataGridTextColumn.CellStyle>
                    </DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>

我试图发生的是ColorConverter将在每次更改数据值时运行,因此它将根据该值更新网格单元的背景色。
感谢您的帮助。

0 个答案:

没有答案