C# .NET4.0中WPF数据网格的奇怪行为

C# .NET4.0中WPF数据网格的奇怪行为,c#,.net,wpf,C#,.net,Wpf,问题描述: 我有一个小的WPF窗口,使用绑定到可观察集合的Datagrid。当此窗口在具有.net 4.5的Windows操作系统中启动时,它工作正常,但当我在仅安装了.net 4.0的操作系统(例如:Windows Server 2008R2)中运行时,此窗口崩溃,出现以下异常 或在此: 即使我的应用程序基于.net 4.0,并且我没有使用任何特定于.net 4.5的功能,如果我安装.net 4.5,同样的窗口也可以正常工作 如果有人能解释为什么会有不同的行为,那就太好了 项目可在此处找到:

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

或在此:

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

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

项目可在此处找到:
谢谢

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

您已捕获ArgumentOutOfRangeException,此异常与platform.Net4.0和.Net4.5无关。此外,在.Net4.0和.Net4.5中都有ArgumentOutOfRangeException

代码
var t=Projects.ColumnFromDisplayIndex(2)
获取指定索引处的DataGridColumn。因为您有9列(_name,,_path), 你没有发现任何异常。但是,如果像这样将Projects.ColumnFromDisplayIndex(10)设置为10,您将捕获一个
ArgumentOutOfRangeException

因为您超出了范围(您有9列,但您试图获取不存在的列)。

谢谢。这里的要点是,如果我的集合在安装了.NET4.5的操作系统中是空的,那么这些列在窗口中仍然可见,但数据网格是空的。但是在.NET4.0版本中,列本身不可见,因此Datagrid的Columns属性为0,而在.NET4.5中,它将为10。注意:只有在操作系统中安装了两个版本中的一个而不是两个版本时,此行为才可见。@Sherry您确定两个版本中的代码相同吗?您捕获了一个异常,并且异常不依赖于安装的平台。这只是你想从DataGrid中获取什么的问题,似乎问题与此有关