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