2017-08-11 1 views
0

を無視されます。BackRequestedイベントハンドラevent.Handledは私がページに移動するとき、私はハンドラをアタッチドキュメントごとに、そう

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    /* Attach back listener to handle the back press */ 
    SystemNavigationManager.GetForCurrentView().BackRequested += NavigationPage_BackRequested; 
      ... 
} 

そして去るとき、私はそれを切り離し:

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { 
    SystemNavigationManager.GetForCurrentView().BackRequested -= NavigationPage_BackRequested; 
    e.Cancel = false; 
} 

そして、

private void NavigationPage_BackRequested(object sender, BackRequestedEventArgs e) { 

    e.Handled = true; 

} 

しかし、システムはまだこのバック・クリックを処理しています私は遠ざかります。どうして?

答えて

0

上記のコードは正常に動作していますが、大きな問題は、システムのナビゲーションイベントまたはアプリケーションのソフトウェアボタンで実装されたFrame.GoBack()イベントをキャンセルしようとしていますか?

SystemNavigationManager:システムが提供するバックナビゲーションイベントに応答する方法を提供します。

backwards navigationのマニュアルを見ると、特定の戻るボタン(ハードウェア/ソフトウェア)のみがシステム提供のイベントです。タブレットモードの下部にあるソフトウェアボタン。

Tablet mode

しかし、かなりの数のプロジェクトテンプレート(Visual StudioでまたはMVVMライブラリから)もFrame.GoBack()メソッドにこのイベントボタン(かなり頻繁に左上)とワイヤをソフトウエアをバック提供。これはシステム提供イベントではなく、このようにキャンセルすることはできません。理由:使用しているフレームワーク(または使用しているフレームワーク)がGoBack()を明示的に呼び出すため、このシナリオではなぜ取り消す必要がありますか。

関連する問題