我有一个DataGrid
每隔几秒钟通过Thread
. DataGrid
需要提供列标题排序、分组和过滤。
我目前有一个DataGrid
绑定到 aICollectionView
的来源ICollectionView
是一个ObservableCollection
. 从我在其他线程上阅读的内容来看,这似乎是一个好方法。
排序“有效”,但在ICollectionView.Source
更新ObservableCollection
. 我尝试SortDescriptions
在更新前保存并在更新完成后将其重新添加到ICollectionView
。但结果是一样的。
有人可以指出我所缺少的吗?
编辑这里有一些代码......
查看 (XAML)
<DataGrid ItemsSource="{Binding CollectionView, Source={StaticResource ViewModel}}>
视图模型
public ICollectionView CollectionView
{
get
{
collectionViewSource.Source = dataColl;
if (SortDescriptions != null)
{
foreach (SortDescription sd in SortDescriptions)
{
collectionViewSource.View.SortDescriptions.Add(sd);
}
}
collectionViewSource.View.Refresh();
return collectionViewSource.View;
}
}
public ObservableCollection<SomeObject> DataColl
{
get { return dataColl; }
private set
{
this.dataColl= value;
OnPropertyChanged("CollectionView");
}
}
以下是每隔几秒更新一次数据的方法...
private void UpdateData()
{
while (true)
{
System.Threading.Thread.Sleep(mDataRefreshRate);
// SortDescriptions is a Property of the ViewModel class.
SortDescriptions = collectionViewSource.View.SortDescriptions;
ObservableCollection<SomeObject> wDataColl
= new ObservableCollection<SomeObject>();
//... Irrelevant code that puts the data in wDataColl ...
DataColl= wDataColl;
}
}