2016-10-14 4 views
0

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を含むベースページモデルを作成しました。各ページには、以下のようにoverridde 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方法で見たよう。たびに私は何のエラーもなくボタンアプリケーションのクラッシュを押す。

+0

はhttp://stackoverflow.com/questionsを見てください/ 24335925/windows-phone-8-1-universal-app-terminates-on-navigate-back-from-second-page – Bugs

答えて

0

私はアプリがクラッシュしているとは思わないが、それはバックボタンのデフォルトの動作であるため、ただ終了している。あなたがする必要がどのような

はあなたBackPressedイベントハンドラにコード行を追加することにより、バックボタンを扱ってきたフラグです:

e.Handled = true; 
関連する問題