在继承自Screen的对话框视图模型中的 caliburn micro 中,您可以执行以下操作:
TryClose(true); // for OK
或者
TryClose(false); // for Cancel
那么你可以这样做:
var vm = IoC.Get<MyViewModel>();
var r = WindowManager.ShowDialog(vm, null, null);
if (r.HasValue && r.Value) {
// do something on OK
}
您的对话框 xaml 可能如下所示:
<Button Content="OK" cal:Message.Attach="[Event Click] = [AcceptButton()]" />
<Button Content="Cancel" cal:Message.Attach="[Event Click] = [CancelButton()]" />
使用这个命名空间:
xmlns:cal="http://www.caliburnproject.org"
这是对话框视图模型实现的详细代码示例:
public bool CanAcceptButton
{
get { return true; /* add logic here */ }
}
public void AcceptButton()
{
TryClose(true);
}
public bool CanCancelButton
{
get { return true; }
}
public void CancelButton()
{
TryClose(false);
}