我在我的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
StartupUri
被设置为MainView
。
许多MvvmCross平台不支持应用程序关闭自己 - 这是在iOS中,的WindowsPhone,Android的,的WindowsPhone等行为皱起了眉头 - 它不是通过公共API支持的有 - 所以这不是一个普通的跨平台的要求。
但是,如果你想实现这个功能对于那些支持它的平台的话,我想也许把这个要么是主持人或自定义UI注入服务的最佳场所。
把它放在一个自定义演示,简单地说:
- 创建一个自定义演示类(基于MvxWpfViewPresenter.cs )
- 在超驰返回这个类的一个实例
CreatePresenter
方法在你的Setup.cs - 覆盖
ChangePresentation
方法在自定义演示-这种方法也许可以用“知名” MvxClosePresentationHint.cs这就是Close
发送或它可以使用你定义一个新的自定义演示文稿的提示,并通过发送ChangePresentation(MvxPresentationHint hint)
在一个视图模型。
在一些自定义UI的服务把这个功能代替,看到N = 31 http://mvvmcross.wordpress.com/
如果您正在寻找在这个领域关机,那么你也可能要考虑采取什么步骤当应用程序被关闭(通过用户或操作系统的动作)。 MvvmCross确实框架内揭露常见的终生监测“挂钩的开端,但实际上在实践中这些都是目前非常基本的 - 所以你会发现你需要在这里建立自己的公共层。