我想获取选定的DataGrid值。 以下代码可以正常工作,但是当选择的行数超过10个项目时,会遇到错误。
错误消息:"对象引用未设置为对象的实例" 请帮助我。
for (int i = 0; i < MyGrid.SelectedItems.Count; i++)
{
var item = MyGrid.SelectedItems[i];
if (item == null) { return; }
string Name = (MyGrid.Columns[1].GetCellContent(item) as TextBlock).Text;
MessageBox.Show(Name);
}
答案 0 :(得分:0)
以下代码可以正常工作,但是当所选行数超过10个项目时,会遇到错误...
这是因为出于性能原因,您当前未在屏幕上看到的项目的可视容器已被虚拟化。
您应该做的是将SelectedItems[i]
转换为您的数据对象类型,然后访问此对象的属性:
for (int i = 0; i < MyGrid.SelectedItems.Count; i++)
{
var item = MyGrid.SelectedItems[i] as YourClass;
if (item == null) { return; }
string name = YourClass.Name;
MessageBox.Show(name);
}
YourClass
是指DataGrid
的{{1}}中的项目类型:
ItemsSource