【发布时间】:2013-03-06 22:27:19
【问题描述】:
在我的 WPF 应用程序中,我正在数据网格中浏览数据库。我的代码的重点是将数据网格中选定的单元格内容存储到一些值列表中以供进一步操作。我的代码适用于 12 岁以下的选定项目,但对于更多项目,它会抛出一个 NullRefferenceException,上面写着“
对象引用未设置为对象的实例”。
感谢您的帮助。
代码:
List<string> graphValue = new List<string>(dataGrid1.SelectedItems.Count); //create list
IList someList = new ArrayList(dataGrid1.SelectedItems); //define Ilist
DataGridColumn dataGridCol = dataGrid1.Columns[listBox1.SelectedIndex];
//select column whom i wana collect data
if (dataGrid1.SelectedItems != null) //when selection applied..
{
for (int i = 0; i < dataGrid1.SelectedItems.Count; i++) //go row by row in selected column above
{
try
{
id = ((TextBlock)dataGridCol.GetCellContent(someList[i])).Text.ToString(); //save cell content to string
graphValue.Add(id); //add value to Ilist
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message, "error"); }
}
}
}
【问题讨论】:
-
不要在 WPF 的代码中操作 UI 元素。学习 MVVM。创建一个适当的 ViewModel 来保存您的数据。视觉树太复杂了,你的代码不断地将视觉元素转换成你期望的样子,真的很容易出错。它通过强制 UI 元素实际位于代码期望的位置来降低可伸缩性。
-
哪一行抛出异常?有东西返回
null... -
在这一行抛出异常:
id = ((TextBlock)dataGridCol.GetCellContent(someList[i])).Text.ToString();但输入值都不是null我只是选择更多数据输入(更多行)