私は新しいPagedCollectionViewをItemsSourceとして使用しています。Silverlightで "ライブ"フィルタリングを実装する方法
私は、DataGridにCollectionViewをバインドし、このように私のフィルターを通すのみを表示値にグリッドを必要としました:UserクラスはINotifyPropertyChangedの実装を
var oc = new ObservableCollection<User>();
var pc = new PagedCollectionView(oc);
dataGrid.ItemsSource = pc;
。私はこのようなフィルタを適用しています:
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
pc.Filter += Include;
}
private bool Include(object obj)
{
return (obj as User).Name == filterText.Text;
}
そしてそれは動作します。問題は、ユーザーを更新すると、フィルター結果が更新されないということです。フィルタをクリアして再適用した場合は機能します。
もちろん、私はPagedCollectionViewでRefresh()メソッドを呼び出すことができますが、これは手動でビューを更新することなく可能です。
私が必要とするのは、「ライブフィルタリング」メカニズムです。どのようにコードするかについての任意のアイデア?
シナリオ:システム上のライブアラームを表示するためのアプリケーションです。ユーザーがcolumn0に "Error"または "Warning"(私のフィルタ)の行のみを表示するように選択したとします。行のcolumn0が "Info"から "Warning"に変わると、その行はRefresh()を呼び出さずに自動的に表示されるはずです(フィルターを通過する)。
おかげLarsi
Hmmmm。私はどのように理解しているかわからない。私は、必要なものを明確にするためのシナリオで投稿を更新しました – Larsi