2009年11月4日水曜日

Filter更新のタイミング

ListBoxなどのリストで表示したくないアイテムがあるときはFilterを使います。
ですが、Filterを後からかけ直す方法がわからずこの数日四苦八苦してました。
具体的には、


  IsDisplay == false;


のときアイテムを非表示にするようなListboxで、
リストに追加するときの状態でフィルタがかかりますが、
すでに表示中のIsDisplayをfalseに書き換えても、
フィルタは再度かからないという状態でした。

解決方法は、
表示するアイテムをINotifyPropertyChangedにするなりして、
変更を検出できるようにする。
変更を検出したら


CollectionViewSource.GetDefaultView(リストのインスタンス).Refresh();



などで更新をしてやること。

でした。
スマートではないような気がしますが、一応解決ということで。

0 件のコメント:

コメントを投稿