wpf中的DialogResult问题

我有一个窗口,我打开几次作为ShowDialog。

每次打开它我都会在第一次使用new关键字时:

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

我第二次从MyWindow View Model类中打开它:

 new MyWindow().ShowDialog(); 

在MyWindow代码后面我有2个事件。 一个是用户clcik ok,另一个是用户点击取消时。

 void OnCancel(){ DialogResult = false; } void OnOk(){ DialogResult = true; } 

事件从视图模型类触发,形成ICommand执行,而不是绑定到窗口的“确定”和“取消”按钮。

在xaml中,我为取消按钮执行了此操作:

 IsCancel = true; 

这对于ok按钮:

 IsDefault = true; 

在我第一次打开窗口时,我可以设置DialogResult = true,但在此之后,当我尝试设置DialogResult时,我有exception“Dialofresult只能在创建窗口后设置并显示为ShwDialog”。

我也看到DialogResult在第一次设置为true后是真的,我认为exception的原因,但我不明白为什么如果我关闭窗口并使用new关键字创建一个新的,为什么是真的。 。

任何建议

提前致谢

编辑:问题是,一旦我clcik“ok”按钮,DialogResult设置为true和saty true,我不能将其设置为false。

编辑

谢谢大家,我解决了这个问题。

问题是我注册了View Model事件(单击“ok”并点击“取消”)当用户点击“取消”时我删除了注册,但是当他点击“确定”时却没有…

设置DialogResult关闭窗口,因此您无法再次设置DialogResult

顺便说一句, new Window().ShowDialog()返回一个bool? ,不是窗户……

如果我关闭窗口并使用new关键字创建一个新窗口,我不明白为什么会保持正确…

因为你初衷了一个新的窗口。 它返回True,因为你已经第一次解释了它。