我有一个窗口,我打开了几次作为一个ShowDialog。
每次打开它时,我第一次使用新关键字:
var myWindow = new MyWindow();
myWindow.ShowDialog();第二次从MyWindow视图模型类打开它:
new MyWindow().ShowDialog();在后面的MyWindow代码中,我有两个事件。一个是当用户clcik确定时,另一个是当用户单击cancel时。
void OnCancel(){
DialogResult = false;
}
void OnOk(){
DialogResult = true;
}事件从View类中触发,形成ICommand执行,而不是绑定到窗口的"ok“和"cancel”按钮。
在xaml中,我这样做是为了取消按钮:
IsCancel = true;这个是“确定”按钮:
IsDefault = true;在我第一次打开窗口时,我可以设置DialogResult = true,但在那之后,当我试图设置DialogResult时,我得到了异常"Dialofresult只能在创建窗口之后设置,并显示为ShwDialog“。
我还看到DialogResult在第一次设置为true之后是真的,我认为出现异常的原因,但我不明白如果我关闭窗口并使用新关键字创建一个新窗口,为什么保持为真.
任何建议
提前感谢
编辑:,问题是,一旦我点击"ok“按钮,DialogResult设置为true和saty,我就不能将其设置为false。
编辑
谢谢大家,我解决了这个问题。
问题是,我注册到视图模型事件("ok“单击和"cancel”单击),当用户单击"cancel“而不是当他单击”ok“时,我会删除寄存器.
发布于 2011-07-18 13:58:26
设置DialogResult将关闭窗口,因此不能再次设置DialogResult
顺便说一句,new Window().ShowDialog()返回一个bool?,而不是一个窗口.
发布于 2011-07-18 14:04:09
如果我关闭窗口并使用
关键字创建一个新窗口,我不明白为什么保持为真.
因为你不喜欢一个新窗口。它返回True,因为正如您第一次解释的那样。
https://stackoverflow.com/questions/6733986
复制相似问题