ShowDialog として数回開くウィンドウがあります。
それを開くたびに、最初に new キーワードを使用します。
var myWindow = new MyWindow();
myWindow.ShowDialog();
2 回目は MyWindow View Model クラスから開きます。
new MyWindow().ShowDialog();
MyWindow のコード ビハインドには、2 つのイベントがあります。1 つはユーザーが OK をクリックしたとき、もう 1 つはユーザーがキャンセルをクリックしたときです。
void OnCancel(){
DialogResult = false;
}
void OnOk(){
DialogResult = true;
}
イベントは、ウィンドウの「OK」および「キャンセル」ボタンにバインドするよりも、View Model クラスから ICommand Execute から発生します。
xaml では、キャンセル ボタンに対して次のようにしました。
IsCancel = true;
そして、これはOKボタンの場合:
IsDefault = true;
初めてウィンドウを開いたときにDialogResult = trueを設定できますが、その後DialogResultを設定しようとすると、「Dialofresultはウィンドウを作成してShwDialogとして表示した後にのみ設定できます」という例外が発生しました。
また、最初に true に設定された後に DialogResult が true であることも確認しました。例外の理由は、ウィンドウを閉じて new キーワードを使用して新しいウィンドウを作成した場合に true のままである理由がわかりません。 .
なにか提案を
前もって感謝します
編集: 問題は、「OK」ボタンをクリックすると、DialogResultがtrueに設定され、trueに設定され、falseに設定できないことです。
編集
みんなありがとう、私は問題を解決します。
問題は、View Model イベント (「OK」をクリックして「キャンセル」をクリック) に登録し、ユーザーが「キャンセル」をクリックしたときに登録を削除するが、「OK」をクリックしたときではないことでした...