をDataGrid
介して数秒ごとにデータを更新する がありますThread
。DataGrid
列ヘッダーの並べ替え、グループ化、およびフィルタリングを提供する必要があります。
現在、 へのDataGrid
バインドがICollectionView
あり、 のソースは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;
}
}