我在视图中有一个数据网格,其项目源绑定到我的viewmodel中的可观察集合。这很好用。我已经在视图xaml中定义了datagrid的列和绑定。所有列都具有唯一的名称,该名称与它们表示的数据库列名称相匹配。
我创建了一个用户控件,其中包含datagrid的所有过滤器。用户控件具有视图模型绑定的命令,该命令为视图模型提供调用ria服务所需的所有参数,并填充绑定到datagrids项源的可观察集合。这很好用。
我有一个服务,它引用了datagrid并订阅了一个过滤器用户控件的事件。当事件触发服务时,会更改列标题,然后使用列显示索引重新排序列,然后折叠不再相关的列。
除了更改显示索引外,所有这些都有效。我改变其中一个显示索引值的Eveytime我得到一个超出范围的异常。我在离开方法之前查看了索引,它们是有效的。我已经尝试等待数据绑定发生后,它没有任何区别。任何见解将不胜感激。这是堆栈跟踪:
at MS.Internal.XcpImports.MethodEx(IntPtr ptr,String name,CValue [] cvData)在MS.Internal.XcpImports.MethodEx(DependencyObject obj, 字符串名称)在System.Windows.UIElement.UpdateLayout()