今回のは単純すぎというかまぬけすぎて書くかどうか迷ったのですが、
Listboxでたとえば3つのアイテムA,B,Cがあって、
ふつうはA選択中にBをクリックするとBが選択される。
今回の失態は、A選択中にBをクリックするとA,Bが選択状態になる、というもの。
SelectionModeとか余計なものが頭をよぎったのですぐにわからなかったのですが、
単純にoverrideしたEqualsが誤ってA==Bとなるようになっていたのでした。。
2009年11月4日水曜日
Filter更新のタイミング
ListBoxなどのリストで表示したくないアイテムがあるときはFilterを使います。
ですが、Filterを後からかけ直す方法がわからずこの数日四苦八苦してました。
具体的には、
のときアイテムを非表示にするようなListboxで、
リストに追加するときの状態でフィルタがかかりますが、
すでに表示中のIsDisplayをfalseに書き換えても、
フィルタは再度かからないという状態でした。
解決方法は、
表示するアイテムをINotifyPropertyChangedにするなりして、
変更を検出できるようにする。
変更を検出したら
などで更新をしてやること。
でした。
スマートではないような気がしますが、一応解決ということで。
ですが、Filterを後からかけ直す方法がわからずこの数日四苦八苦してました。
具体的には、
IsDisplay == false;
のときアイテムを非表示にするようなListboxで、
リストに追加するときの状態でフィルタがかかりますが、
すでに表示中のIsDisplayをfalseに書き換えても、
フィルタは再度かからないという状態でした。
解決方法は、
表示するアイテムをINotifyPropertyChangedにするなりして、
変更を検出できるようにする。
変更を検出したら
CollectionViewSource.GetDefaultView(リストのインスタンス).Refresh();
などで更新をしてやること。
でした。
スマートではないような気がしますが、一応解決ということで。
登録:
投稿 (Atom)