【问题标题】:Weird behaviour of WPF Datagrid in .Net 4.0.Net 4.0 中 WPF Datagrid 的奇怪行为
【发布时间】:2015-10-29 14:56:55
【问题描述】:

问题描述: 我有一个小的 WPF 窗口,它使用绑定到可观察集合的 Datagrid。当此窗口在具有 .net 4.5 的 Windows 操作系统中启动时,它可以正常工作,但是当我在仅安装了 .Net 4.0(例如:Windows Server 2008R2)的操作系统中运行时,此窗口会崩溃并出现以下异常。

或在这里:http://i.imgur.com/AxG9t5p.png

如果我安装 .net 4.5,即使我的应用程序基于 .net 4.0 并且我没有使用任何特定于 .net 4.5 的功能,相同的窗口也可以正常工作。

如果有人能解释为什么会有不同的行为,那就太好了?

项目可以在这里找到: http://1drv.ms/1k9Yolx 谢谢

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

    我尝试在 .Net4.5 和 .Net 4.0 上运行您的项目,但没有遇到任何错误。

    您已捕获 ArgumentOutOfRangeException,并且此异常与平台 .Net4.0 和 .Net 4.5 无关。此外,.Net4.0 和 .Net 4.5 中都有 ArgumentOutOfRangeException。

    代码var t = Projects.ColumnFromDisplayIndex(2) 获取指定索引处的DataGridColumn。因为你有 9 列(_name,...,_path), 你不会捕捉到任何异常。但是,如果您像这样Projects.ColumnFromDisplayIndex(10) 设置为 10,您将捕获到 ArgumentOutOfRangeException 因为您超出范围(您有 9 列,但您尝试获取不存在的列)。

    【讨论】:

    • 谢谢。这里的要点是,如果我的集合在安装了 .net 4.5 的操作系统中为空,则列在窗口中仍然可见,但数据网格为空。但在 .net 4.0 版本中,列本身不可见,因此 Datagrid 的 Columns 属性为 0,而在 .net 4.5 中,它将为 10。注意:此行为仅在操作系统中可见,前提是安装了两者之一两者。
    • @Sherry 你确定这两个变种的代码是一样的吗?
    • 您发现了一个异常并且异常不依赖于已安装的平台。这只是您想从 DataGrid 中获取什么的问题。
    猜你喜欢
    • 2020-10-06
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2011-10-10
    • 2011-08-18
    • 2011-05-24
    • 1970-01-01
    相关资源
    最近更新 更多