如何实现关闭在MVVMCross WPF应用程序按钮?(How to implement Close

2019-09-29 06:25发布

我在我的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

Answer 1:

许多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确实框架内揭露常见的终生监测“挂钩的开端,但实际上在实践中这些都是目前非常基本的 - 所以你会发现你需要在这里建立自己的公共层。



文章来源: How to implement Close button in MVVMCross WPF application?
标签: c# wpf mvvmcross