4

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

每次我打开它时,我第一次使用新关键字:

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

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

new MyWindow().ShowDialog();

在 MyWindow 代码后面我有 2 个事件。一种是当用户单击确定时,另一种是当用户单击取消时。

void OnCancel(){
  DialogResult = false;
}

void OnOk(){
  DialogResult = true;
}

从视图模型类触发的事件形成 ICommand Execute,然后绑定到窗口的“确定”和“取消”按钮。

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

IsCancel = true;

这对于确定按钮:

IsDefault = true;

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

我还看到第一次设置为 true 后 DialogResult 为 true,我认为这是异常的原因,但我不明白如果我关闭窗口并使用 new 关键字创建一个新窗口,为什么会保持 true .. .

任何建议

提前致谢

编辑: 问题是,一旦我单击“确定”按钮,DialogResult 设置为 true 和 saty true,我无法将其设置为 false。

编辑

谢谢大家我解决了问题。

问题是我注册到视图模型事件(单击“确定”并单击“取消”),当用户单击“取消”时我删除了注册,但当他单击“确定”时没有删除...

4

2 回答 2

2

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

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

于 2011-07-18T13:58:26.983 回答
1

如果我关闭窗口并使用 new 关键字创建一个新窗口,我不明白为什么要保持真实......

因为您正在初始化一个新窗口。它返回 True 因为正如您第一次解释的那样。

于 2011-07-18T14:04:09.117 回答