【发布时间】:2017-01-03 10:27:01
【问题描述】:
当我在数据网格中滚动并在可见屏幕内外选择项目时,它会引发以下异常。
Object reference not set to an instance of an object.
Dim sn as string 是罪魁祸首...
For Each item In asset_MasterDataGrid.SelectedItems
If item IsNot Nothing Then
Dim snIndex As Integer = asset_MasterDataGrid.Columns.IndexOf(asset_MasterDataGrid.Columns.LastOrDefault(Function(c) c.Header = "serial num"))
Dim sn As String = DirectCast(asset_MasterDataGrid.SelectedCells(snIndex).Column.GetCellContent(item), TextBlock).Text
variables.selectedAssets.Add(sn)
End If
Next
当EnableRowVirtualization="True" 为真时,我收到错误消息。我假设这是因为一旦我滚动离开屏幕,同时选择了行,这些行就不再存在了。
如何在不关闭虚拟化的情况下避免这种情况?
【问题讨论】:
-
这很有趣,如果我关闭 EnableRowVirtualization 它可以正常工作,但是打开它就不行了。我知道这个错误是什么意思,但不明白为什么它会在行虚拟化时发生,或者提示修复它。
-
我敢打赌,启用虚拟化后,您尝试与之交互的某些对象有时实际上并不存在。在 WPF 中,直接与任何单元格或行对象进行交互绝不是一个好主意。如果你只与
m_dt.DefaultView中的东西交互,而让网格担心显示它,你应该没问题。 -
这很有帮助,我会试试的。谢谢
-
好吧,除非它有帮助,否则不要称它有帮助。