获取选定的DataGrid值C#wpf

时间:2018-04-20 14:22:19

标签: wpf

我想获取选定的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);
}

1 个答案:

答案 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