偶然に遭遇した現象です。
SelecttionModeがSingleであるのに、マウスでクリックすると全ての項目が選択でき、解除できなくなります。
再現手順 §
- Visual Studio 2010でWPFアプリケーションを作成する
- フォーム上にリストボックスを1つ貼り付ける
- メインフォームをダブルクリックしてWindow_Loadedイベントのハンドラを作成する
- ハンドラにlistBox1.Items.Add("Test Data");を2回を書き込む
- 実行してリストボックスの項目を順次クリックする
原因と対策 §
原因は、おそらくWPFのリストボックスが文字列以外にも使用できる汎用であり、重複するアイテムの追加を想定していないためでしょう。だから、同じアイテムが違うと判定できていないのでしょう。
"Test Data"+""と記述する程度では違うインスタンスになりません。listBox1.Items.Add(new StringBuilder("Test Data"));とすれば意図通りに動作しました。しかし、listBox1.Items.Add(new StringBuilder("Test Data").Append("").ToString());のようなコードを書いてもダメでした。結局同じものしか戻って来ないようです。
余談 §
おそらく、このあたりに書かれている問題と同じです。