【发布时间】:2015-03-26 22:05:46
【问题描述】:
例如,在 xaml 中,我有一个名为 PersonList 的 DataGrid:
<DataGrid Name="PersonList" />
在代码隐藏中我有一个 Person 集合:
ObservableCollection<Person> persons = ViewModel.PersonModel;
然后我创建了一个Person DataTable,并通过以下方式将它绑定到PersonList:
PersonDataTable.Columns.Add("Name", typeof(string));
PersonDataTable.Columns.Add("Age", typeof(int));
foreach (var person in persons)
{
if (person != null)
{
PersonDataTable.Rows.Add(
Person.Name,
Person.Age
);
}
}
PersonList.ItemSource = PersonDataTable.AsDataView;
我的问题是,如何改变某一行的背景颜色?例如,更改人的年龄> 50的行的背景颜色
我尝试通过访问 PersonList.ItemSource 中的每一行来做到这一点,但我失败了,该行始终为空:
int count = 0;
foreach (var person in PersonList.ItemSource)
{
var row = PersonList.ItemContainerGenerator.ContainerFromItem(person) as DataGridRow;
if (PersonDataTable.Rows[count].Field<int>(1) > 50)
{
row.Background = Brushes.Gray;
}
count++;
}
请帮助,WPF 大师 :)
【问题讨论】: