Datagrid привязан к списку, ColorConverter не обновляется - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть 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 запускался при каждом изменении значения данных, поэтому он обновляет цвет фона ячейки сетки на основе значения.
Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...