在DataGrid中包装ObservableCollection时,PagedCollectionView会在没有数据时清除列标题

时间:2009-11-24 20:40:02

标签: silverlight silverlight-3.0 datagrid header observablecollection

我正在使用PagedCollectionView进行分组。我有一个DataGrid和一个带搜索按钮的文本框。网格的ItemSource是我的PagedCollectionView,而PagedCollectionView包装了一个ObservableCollection,因为网格中的项目可以通过后台进程更新其绑定对象。单击搜索时,我首先通过ObservableCollection清除,然后使用db中的数据加载它。当我打电话给我的收藏时,DataGrid上的内容消失了,包括列。当项目添加到我的收藏中时,它们会重新出现。我真的希望列和它们的标题保持不变,因为当它们消失时它非常刺耳,更不用说排序顺序等等。我相信这些项目会立即消失,因为它是一个ObservableCollection,但我需要这样才能通过上述后台进程更新行。如果我将PagedCollectionView作为包装器删除并简单地将DataGrid的ItemSource设置为ObservableCollection,则不会发生这种情况,即使清除了集合,我的列和标题仍然存在,并且我的行会立即由后台进程更新。还有其他人观察过这种行为吗?有谁知道任何变通方法?或者我只是做错了什么?

1 个答案:

答案 0 :(得分:0)

出现问题是因为我使用的是AutoGenerated列。每次我清除我的集合时,PageCollectionView都会为我重新生成列。通过关闭该属性并使用Blend为我“预生成”列,我能够解决这个问题。