我正在使用 Paul McClean 描述的数据虚拟化:http : //www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx
它适用于 ListView 控件。
但是当我将它与 DataGrid 控件(AsyncVirtualizationCollection)一起使用时,它会引发异常:
“值不能为空,参数名称:键”
我不知道原因是什么以及如何阻止这种情况发生。我需要DataGrid控件的编辑功能
我也遇到了这个。原来问题出在VirtualizingCollection(的基类AsyncVirtualizingCollection)中的这段代码:
public T this[int index]
{
// snip
// defensive check in case of async load
if (_pages[pageIndex] == null)
return default(T);
// snip
}
Run Code Online (Sandbox Code Playgroud)
IfT是引用类型,default(T)is null,并且DataGrid不支持空行对象。
为了解决这个问题,我添加了一个公共属性VirtualizingCollection来保存默认值:
public T DefaultValue = default(T);
并将上面的代码更改为 returnDefaultValue而不是default(T). 然后,当我构建 my 时AsyncVirtualizingCollection,我设置DefaultValue了一个在加载过程中显示的虚拟对象。
你用字典吗?调试并检查是否尝试添加空值作为字典中的键。或者检查 gridview 上是否有 DataKeyNames 参数以及您尝试插入的空键。
只需调试加载/填充数据的位置 (F10/F11)。在 Visual Studio 中观看本地窗口。
| 归档时间: |
|
| 查看次数: |
3330 次 |
| 最近记录: |