【问题标题】:MvvmCross and back button in Windows Phone appWindows Phone 应用程序中的 MvvmCross 和返回按钮
【发布时间】:2014-09-04 10:20:43
【问题描述】:
我正在使用 MvvmCross 构建一个 Windows Phone 应用程序(使用 WinRT 的 8.1)。要导航到新视图,我使用 ShowViewModel()。但是当我点击手机上的后退按钮时,应用程序正在关闭,而不是导航回第一个视图。当我点击返回按钮时,我想返回第一个视图怎么办?
【问题讨论】:
标签:
windows-phone
mvvmcross
【解决方案2】:
这是一个更简单的解决方案。为从 MvxWindowsPage 派生的所有 WP 页面创建一个基本类型。然后,在那里处理返回键并将正确的信息路由到您的 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 派生的基础视图模型,并且您可以从该基础视图模型派生所有虚拟机。该基础虚拟机应该有一个 GoBackCommand 可观察属性,并且执行该命令应该执行一个简单的 Close(this)。
要了解幕后情况,请参阅以下相关问题:Windows Phone 8.1 Universal App terminates on navigating back from second page?
编辑
固定声明。