2009-08-07 2 views
2

私は新しい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

答えて

0

は、あなただけのSilverlight 3 SDKにAutoCompleteBoxコントロールを使用することができませんでしたか?

+0

Hmmmm。私はどのように理解しているかわからない。私は、必要なものを明確にするためのシナリオで投稿を更新しました – Larsi

関連する問題