DialogResult problem in wpf

末鹿安然 提交于 2020-01-03 18:52:12

问题


I have a window that I open a few times as a ShowDialog.

Every time I open it I use the new keyword in the first time i did:

var myWindow = new MyWindow();
myWindow.ShowDialog();

second time I open it from the MyWindow View Model class:

new MyWindow().ShowDialog();

in MyWindow code behind I have 2 events. one is when the user clcik ok and another when the user click cancel.

void OnCancel(){
  DialogResult = false;
}

void OnOk(){
  DialogResult = true;
}

The events fires from the View Model class form the ICommand Execute than bind to "ok" and "cancel" buttons of the window.

In the xaml I did this for the cancel button:

IsCancel = true;

And this for the ok button:

IsDefault = true;

in the first time that I opened the window I can set DialogResult = true, but after that when I try to set the DialogResult I've got exception "Dialofresult can set only after created window and shown as ShwDialog".

I also saw that the DialogResult is true after the first time is set to true and I think that the reason for the exception but I dont understand why is stay true if I closed the window and create a new one by using the new keyword...

Any suggestion

Thanks in advance

Edit: The problem is that once I clcik the "ok" button the DialogResult set to true and saty true and I can't set it to false.

Edit

Thanks everyone I solve the problem.

The problem was that I register to the View Model events ("ok" clicked and "cancel" clicked) and I remove the register when the user click "cancel" but not when he click "ok"...


回答1:


Setting DialogResult closes the window, so you can't set DialogResult again

BTW, new Window().ShowDialog() returns a bool?, not a window...




回答2:


I dont understand why is stay true if I closed the window and create a new one by using the new keyword...

Because your intializing a new Window. It returns True because as you already explained the first time it does.



来源:https://stackoverflow.com/questions/6733986/dialogresult-problem-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!