これは、アイテムのリスト(マスターウィンドウ)と現在選択されているアイテムを編集できるコントロールのセットで構成されたマスター/子ウィンドウ)。子ウィンドウには「適用」ボタンと「キャンセル」ボタンがあります。WPF:リストボックスの選択変更を停止または元に戻す
ユーザーが値の編集を開始します。その後、「適用」ボタンを押す前に、選択を変更します。
アプリケーションには、「現在のアイテムに変更を適用しますか?」というメッセージが表示され、ボタンは「はい」、「いいえ」および「キャンセル」です。 ユーザが「キャンセル」を押すと、現在の選択を変更しようとする試みが失敗するはずです。
"CurrentSelection"項目はデータバインドされています。
CurrentSelection
プロパティの「セッター」部分でこれを処理できると思いました。ユーザーが「キャンセル」を選択した場合は、単にCurrentSelection
アイテムをそのまま保ち、PropertyChanged
通知イベントを発生させて、古い選択アイテムに更新するようにフォームに指示します。コントロールはこの通知イベントを無視しています。 (それは理にかなって、コントロールは "私は現在の選択が変更されたことを知っています。私はそれを変更しました!")
これを修正する方法はありますか?要約すると、コントロールはバインドSelectedItem
を変更しようとしていますが、「今すぐこの選択項目を変更することはできません」と伝えたいと思います。