昨日のエントリは、だめっぷりを発揮してしまった。
http://blogs.wankuma.com/kazuki/archive/2008/08/27/154403.aspx
だめっぷりその1
ListBoxにStringを突っ込むときはユニークな文字列を突っ込まないと、いやんな動きをすることがある。
知ってるので、全部データを変えて入れてたけど、知らない人が見ることもあるので、書いておくべきだった。
ちなみに、どういう動きをするのかというと…
上のように田中 太郎さんが三人いて、3つ選択した状態でDumpボタンを押すと…
田中 太郎が3つ表示されるのではなく、1つしか表示されない。
さらに、上のように3つの田中 太郎をチェックした状態でどれかのチェックを1つ外すと…
あれ?2個チェックが消えた??といった動きをするのです。
だめっぷりその2
下のような事を書いてたけど真っ赤なうそだった。
ListBoxItemの選択状態は、添付プロパティのSelector.IsSelectedで管理されている。ListBoxItem自体にはIsSelectedといったプロパティは定義されてないといった有様だ。
直感的ではないが、まぁ仕方ないのだろう。分離分離。
ListBoxItemに普通にあります。IsSelectedプロパティ。申し訳ないです。
ということなので、XAMLのCheckBoxの所のBindingも変わって下のような形でOK。
<CheckBox Content="{TemplateBinding Content}"
IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected}"/>
IsCheckedのBindingのPathが(Selector.IsSelected)だったけど、普通にIsSelectedで大丈夫。
ふぅ。