通过后退按钮从页面导航时,应用程序崩溃

时间:2016-10-14 20:12:18

标签: c# mvvm windows-phone-8.1

我正在使用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。每个页面都有一个覆盖pf 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方法中所看到的那样,我试图将其弄清楚,但没有一种是运作方式。每次我按下后退按钮应用程序崩溃没有任何错误。

1 个答案:

答案 0 :(得分:0)

我不认为该应用程序崩溃,它只是退出,因为这是后退按钮的默认行为。

您需要做的是通过在BackPressed事件处理程序中添加以下代码行来标记您已经处理了后退按钮:

<a href="#main-image" class="scrollToTop"><img src="img/up-arrow.png" class="up-arrow"/></a>