我找不到以下问题的解决方案:
我用caliburn micro的WindowManager打开了一个对话框:
public void UserNew()
{
this._windowManager.ShowDialog(new UserViewModel(this._windowManager));
}现在,当用户使用OK按钮关闭对话框时,我需要一个DialogResult。WindowManager的ShowDialog方法不返回DialogResult...
有谁可以帮我?
发布于 2012-05-16 00:07:19
我倾向于使用View Model来处理对话框中发生的事情。例如,您可以在您的UserViewModel上有一个IsCancelled属性,您可以在从ShowDialog调用返回后查询该属性。类似于:
public void UserNew() {
var userViewModel = new UserViewModel(this._windowManager);
this._windowManager.ShowDialog(userViewModel);
if (userViewModel.IsCancelled) {
// Handle cancellation
} else {
// Handle other case(s)
}
}发布于 2013-10-10 18:26:51
在caliburn micro中的对话框视图模型中,继承自Screen,您可以:
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);
}发布于 2012-05-15 17:27:07
WPF对话框返回可为空的bools,而不是DialogResults。Caliburn的ShowDialog也返回bool?
来自MSDN
对话框通常允许用户接受或取消在对话框关闭之前显示的任务。ShowDialog返回一个可以为空的布尔值,该值指定活动是被接受还是被取消。返回值是窗口关闭前DialogResult属性的值。有关详细信息,请参阅DialogResult。
上面的DialogResult引用了System.Windows.Window上名为DialogResult的bool属性。
如果您想返回更复杂的内容,只需在窗口上定义您自己的枚举属性,并在对话框关闭后读取它的值。
https://stackoverflow.com/questions/10597534
复制相似问题