我有一个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将在每次更改数据值时运行,因此它将根据该值更新网格单元的背景色。
感谢您的帮助。