c# - WPF 数据虚拟化和 DataGrid

标签 c# .net wpf

我正在使用 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/

相关文章:

c# - 系统托盘工具提示格式

c# - 如何使用 JSON.Net 反序列化此 json 数据?

.net - 链接文件和添加另一个项目作为引用之间的区别?

c# - Windows 窗体或 WPF 桌面应用程序使用 MFA 登录到 azure AD 以访问 web api

c# - 购物车问题,asp.net c#

c# - 使用 C# 和存储过程解析文本文件并将其加载到数据库中

c# - Service Fabric Actor 状态就像一个队列

c# - MouseButtonEventArgs.MouseDevice.DirectlyOver 误解

WPF DataGrid v 快,分组 v 慢。如何在不使用分组的情况下显示组行

c# - LINQ 获取 TreeView 中最深层次的节点