2009-09-17 18 views
6

これは、アイテムのリスト(マスターウィンドウ)と現在選択されているアイテムを編集できるコントロールのセットで構成されたマスター/子ウィンドウ)。子ウィンドウには「適用」ボタンと「キャンセル」ボタンがあります。WPF:リストボックスの選択変更を停止または元に戻す

ユーザーが値の編集を開始します。その後、「適用」ボタンを押す前に、選択を変更します。

アプリケーションには、「現在のアイテムに変更を適用しますか?」というメッセージが表示され、ボタンは「はい」、「いいえ」および「キャンセル」です。 ユーザが「キャンセル」を押すと、現在の選択を変更しようとする試みが失敗するはずです。

"CurrentSelection"項目はデータバインドされています。

CurrentSelectionプロパティの「セッター」部分でこれを処理できると思いました。ユーザーが「キャンセル」を選択した場合は、単にCurrentSelectionアイテムをそのまま保ち、PropertyChanged通知イベントを発生させて、古い選択アイテムに更新するようにフォームに指示します。コントロールはこの通知イベントを無視しています。 (それは理にかなって、コントロールは "私は現在の選択が変更されたことを知っています。私はそれを変更しました!")

これを修正する方法はありますか?要約すると、コントロールはバインドSelectedItemを変更しようとしていますが、「今すぐこの選択項目を変更することはできません」と伝えたいと思います。

答えて

1

これをテストしていないだけのこと:別のメッセージでプロパティ変更イベントを発生させてみてください。リストには、プロパティの値が変更されている間に通知を無視するラッチがある可能性があります。通知を含む別のメッセージを送信する場合は、ラッチをリセットし、それを処理する必要があります。あなたがMementoパターンを探しているよう

関連する問題