当通过后退按钮从页面导航时,应用程序崩溃
本文关键字:导航 崩溃 应用程序 按钮 | 更新日期: 2023-09-27 18:13:04
我正在使用MVVM开发Windows Phone 8.1应用程序。
我有基视图模型类,其中包含导航服务如下:
public abstract class BaseViewModel : INotifyPropertyChanged
{
protected readonly INavigationService NavigationService;
//....
}
这是我的导航服务类:
public class NavigationService : INavigationService
{
public void Navigate(Type destinationPage)
{
((Frame)Window.Current.Content).Navigate(destinationPage);
}
public void Navigate(Type desitnationPage, object parameter)
{
((Frame)Window.Current.Content).Navigate(desitnationPage, parameter);
}
public void GoBack()
{
((Frame)Window.Current.Content).GoBack();
}
}
当我从XAML绑定命令时,一切都很好。当我想覆盖BackButton
时有问题。我还创建了基页模型,其中也包含NavigationService
。每个页面都有BackPressed
的覆盖,如下所示:
public class BasePage : Page
{
protected INavigationService NavigationService => ComponentManager.GetInstance<INavigationService>();
public BasePage()
{
//...
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}
protected virtual void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
//Frame.Navigate(typeof(MainPage));
(this.DataContext as BaseViewModel)?.Back.Execute(sender);
}
}
正如你在HardwareButtons_BackPressed
方法中看到的,我试图使它以各种方式,但没有一种是有效的。
我不认为应用程序正在崩溃,它只是退出,因为这是后退按钮的默认行为。
你需要做的是通过在你的BackPressed事件处理程序中添加这行代码来标记你已经处理了后退按钮:
e.Handled = true;