Silverlight 4.0 更改Silverlight Datagrid列显示索引始终会引发参数超出范围异常

Silverlight 4.0 更改Silverlight Datagrid列显示索引始终会引发参数超出范围异常,silverlight-4.0,datagrid,Silverlight 4.0,Datagrid,我在视图中有一个datagrid,它的items源绑定到我的viewmodel中的一个可观察集合。这个很好用。我已经在视图xaml中定义了datagrid的列和绑定。所有列都有一个唯一的名称,该名称与它们所表示的数据库列名相匹配 我创建了一个用户控件,其中包含datagrid的所有过滤器。用户控件有一个视图模型绑定到的命令,该命令为视图模型提供调用ria服务和填充绑定到datagrids项源的可观察集合所需的所有参数。这个很好用 我有一个服务,它引用了datagrid并订阅了filter用户控件

我在视图中有一个datagrid,它的items源绑定到我的viewmodel中的一个可观察集合。这个很好用。我已经在视图xaml中定义了datagrid的列和绑定。所有列都有一个唯一的名称,该名称与它们所表示的数据库列名相匹配

我创建了一个用户控件,其中包含datagrid的所有过滤器。用户控件有一个视图模型绑定到的命令,该命令为视图模型提供调用ria服务和填充绑定到datagrids项源的可观察集合所需的所有参数。这个很好用

我有一个服务,它引用了datagrid并订阅了filter用户控件的一个事件。当事件触发时,服务更改列标题,然后使用列显示索引对列重新排序,然后折叠不再相关的列

除更改显示索引外,所有这些操作都有效。每次更改其中一个显示索引值时,都会出现超出范围的异常。在离开该方法之前,我已经查看了索引,它们是有效的。我试着等到数据绑定发生后再进行操作,结果没有什么不同。如有任何见解,将不胜感激。以下是stacktrace:

在MS.Internal.XcpImports.MethodEx(IntPtr ptr,字符串名,CValue[] cvData)在MS.Internal.XcpImports.MethodEx(DependencyObject obj, System.Windows.UIElement.UpdateLayout()中的字符串名称)


找到了一个临时解决方案,仍想知道是否有人知道正确的解决方案。我最终不得不创建自己的datagrid,创建一个服务可以调用的事件,然后重写arrange方法并触发该事件。因为arrange被多次调用,所以我必须在服务中放置一个属性,该属性检查以前是否调用过它,如果是,则跳过设置列的循环。