我在 WPF 应用程序中使用 MVVMCross ,我想提供关闭(或退出 GUI中的按钮可以关闭整个应用程序。有没有一种直接的方法可以使用 MVVMCross 功能来完成这项工作?
我已经使用MainViewModel
尝试了以下方法:
public class MainViewModel : MvxViewModel
{
private MvxCommand _closeCommand;
public MvxCommand CloseCommand {
get {
return _closeCommand ?? (_closeCommand = new MvxCommand(DoClose));
}
}
public void DoClose() {
Close(this);
}
}
不幸的是,无济于事。当我按下已绑定到DoClose
的按钮时,会调用CloseCommand
方法,但即使WPF App
{视图模型(和相应的视图)也无法关闭{1}}设置为StartupUri
。
答案 0 :(得分:4)
许多MvvmCross平台不支持关闭自己的应用程序 - 这在iOS,WindowsPhone,Android,WindowsPhone等行为中不受欢迎 - 公共API不支持它 - 所以这不是一个常见的跨平台请求。
但是,如果您想为那些支持它的平台实现此功能,那么我认为最好放置它的地方可能是在演示者或自定义UI注入服务中。
要将其置于自定义演示者中,只需:
CreatePresenter
方法时返回此类的实例ChangePresentation
方法 - 此方法可能使用Close
发送的“众所周知的”MvxClosePresentationHint.cs,也可以使用新的自定义展示提示您可以在ViewModel中通过ChangePresentation(MvxPresentationHint hint)
定义和发送。要将此功能改为某些自定义UI服务,请参阅http://mvvmcross.wordpress.com/
中的N = 31如果您正在查看此关闭区域,那么您可能还需要考虑在关闭应用程序时采取的步骤(通过用户或操作系统操作)。 MvvmCross确实暴露了框架中常见的“生命周期监视器”钩子的开头,但实际上这些钩子目前非常基础 - 所以你可能会发现你需要在这里构建自己的公共层。