我有一个带有OK取消和应用按钮的DataWindow(MyWindow)。在这个DataWindow中是一个View(MyView)。对于MyWindow和MyView,我已经覆盖了GetViewModelType(),如下所示:
protected override Type GetViewModelType()
{
return typeof(MyViewModel);
}
我也通过UIVisualizerService向MyWindow注册了MyViewModel:
_uiVisualizerService.Register(typeof(MyViewModel), typeof(MyWindow));
在MyViewModel上,我重写了ViewModelBase.Save():
protected override bool Save()
{
if (HasErrors)
return false;
MyModel.SaveChanges();
return base.Save();
}
我用它来显示MyWindow:
var myViewModel = TypeFactory.Default.CreateInstanceWithParametersAndAutoCompletion<MyViewModel>();
_uiVisualizerService.Show(myViewModel);
但是当我点击MyWindow的'OK'按钮时,虽然调用了Save()方法并且base.Save()返回'true',但Window并未关闭。
如果我使用
打开MyWindownew MyWindow().ShowDialog();
“确定”按钮有效。
我错过了什么或做错了什么? “应用”和“取消”按钮可以100%运行
修改
我刚注意到一些事情,使用Show()
在单击OK时不关闭窗口(如上所述)但是ShowDialog()
。
这是对的吗?
答案 0 :(得分:1)
通过更新到Catel v4.0修复了问题。