Windows phone Windows Phone应用程序中的MvvmCross和back按钮

Windows phone Windows Phone应用程序中的MvvmCross和back按钮,windows-phone,mvvmcross,Windows Phone,Mvvmcross,我正在使用MvvmCross构建一个Windows Phone应用程序(使用WinRT的8.1版)。要导航到新视图,请使用ShowViewModel()。但当我按下手机上的“后退”按钮时,应用程序将关闭,而不是导航回第一个视图。当我点击后退按钮时,我想返回到第一个视图。我解决了这个问题,在viewmodel中使用一个带有backbutton事件的界面,然后我编写了一个特定于客户端的实现。在viewmodel中,我处理事件并在我的基类MvxViewModel中调用close方法。在我的博客上阅读更

我正在使用MvvmCross构建一个Windows Phone应用程序(使用WinRT的8.1版)。要导航到新视图,请使用ShowViewModel()。但当我按下手机上的“后退”按钮时,应用程序将关闭,而不是导航回第一个视图。当我点击后退按钮时,我想返回到第一个视图。我解决了这个问题,在viewmodel中使用一个带有backbutton事件的界面,然后我编写了一个特定于客户端的实现。在viewmodel中,我处理事件并在我的基类MvxViewModel中调用close方法。在我的博客上阅读更多关于我的解决方案的信息,

这里有一个更简单的解决方案。为从MvxWindowsPage派生的所有WP页面创建基类型。然后,在此处处理back键,并将适当的信息路由到您的VM:

    public abstract class MyBaseView : MvxWindowsPage {
    public MyBaseView() {
        this.InitializeComponent();
        HardwareButtons.BackPressed += HardwareButtons_BackPressed;
    }

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) {
        if (Frame.CanGoBack) {
            var vm = ViewModel as MyBaseViewModel;
            if (vm != null) {
                e.Handled = true;
                vm.GoBackCommand.Execute(null);
            }
        }
    }
}
现在,您还必须确保有一个从MvxViewModel派生的基本viewmodel,并从中派生所有VM。该基本VM应该有一个GoBackCommand observable属性,执行该命令应该执行一个简单的关闭(这一点)

要了解引擎盖下发生了什么,请参阅以下相关问题:

编辑
修复声明。

中的Win(p)RT应用程序中有一些关于后退按钮的建议-包括App.xaml.cs文件的一些
硬件按钮