17

ListBox.SelectedItems へのバインドを実装する簡単で賢い方法があるかどうかを確認しようとしています。自分で試してみれば、BindingExtension を使用したマークアップ バインディングが機能しないことがわかります。プロパティはそれをサポートしていません。そのため、SelectionChanged のハンドラーを配線し、そのルートを試行する必要があります。私が得た最も近いものはこの投稿です:

http://alexshed.spaces.live.com/blog/cns!71C72270309CE838!149.entry

更新: 上記のブログは利用できなくなりました。その著者の現在のブログはここにあり、参照されているブログ投稿に最も近いのはこの StackOverflow answerです。

これは、必要なすべての C# を便利な添付プロパティに実装します。ただし、「バインディング」を一方向のターゲットからソースとして実装します。双方向バインディングをお願いします。

何か案は?

4

2 に答える 2

41

洗練された解決策を見つけたので、それについてブログ記事を書く時間を見つけました

私がしたことは、ListBox (または実際には DataGrid) に設定できる添付プロパティ SynchronizedSelectedItems を作成することでした。これをコレクションにデータ バインドすると、少し魔法を使って、ListBox の SelectedItems プロパティとコレクションの同期が保たれます。すべてのコードは、私のブログ投稿からダウンロードできます。

「魔法」は、いずれかのコレクションで CollectionChanged イベントをリッスンし、変更を他方に伝達するクラスです。

于 2009-02-12T12:47:12.987 に答える