4

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」をクリックしたときではないことでした...

4

2 に答える 2

2

設定するとウィンドウが閉じるため、再度DialogResult設定することはできませんDialogResult

ところで、ウィンドウではなく をnew Window().ShowDialog()返しbool?ます...

于 2011-07-18T13:58:26.983 に答える
1

ウィンドウを閉じて new キーワードを使用して新しいウィンドウを作成しても、なぜ true のままなのかわかりません...

新しいウィンドウを初期化しているためです。最初に説明したように、True を返します。

于 2011-07-18T14:04:09.117 に答える