我正在使用 Paul McClean 描述的数据虚拟化:http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx
它适用于 ListView 控件。
但是当我将它与 DataGrid 控件 (AsyncVirtualizationCollection) 一起使用时,它会抛出异常:
“值不能为空,参数名称:key”
我不知道原因是什么以及如何阻止这种情况发生。我需要DataGrid控件的编辑功能
最佳答案
我也遇到过。原来问题是 VirtualizingCollection
中的这段代码(AsyncVirtualizingCollection
的基类):
public T this[int index]
{
// snip
// defensive check in case of async load
if (_pages[pageIndex] == null)
return default(T);
// snip
}
如果T
是引用类型,default(T)
是null
,而DataGrid
不是感谢空行对象。
为了解决这个问题,我向 VirtualizingCollection
添加了一个公共(public)属性来保存默认值:
public T DefaultValue = default(T);
并更改了上面的代码以返回 DefaultValue
而不是 default(T)
。然后,当我构造我的 AsyncVirtualizingCollection
时,我将 DefaultValue
设置为一个在加载过程中显示的虚拟对象。
关于c# - WPF 数据虚拟化和 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798809/