【发布时间】:2011-10-07 17:15:36
【问题描述】:
我有一个作为 ShowDialog 打开几次的窗口。
每次打开它我都会使用 new 关键字 我第一次这样做:
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。
编辑
谢谢大家,我解决了这个问题。
问题是我注册到 View Model 事件(点击“ok”和点击“cancel”),当用户点击“cancel”而不是点击“ok”时我删除了注册......
【问题讨论】:
-
您是否记住,设置 DialogResult 后窗口会关闭并且必须重新打开?
-
这段代码运行良好。设置 DialogResult = true 后是否关闭窗口?
-
@hcb 单击“确定”或“取消”后我认为它关闭了它的错误?
-
你在哪里设置
DialogResult?你应该发布更多代码以便我们了解问题。
标签: c# wpf showdialog dialogresult