2016-03-30 6 views
0

このリンクhttp://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-appsに続き、「正常に」ボタンが機能します。私はページの間で私のバックボタンの仕事をすることができます。しかし、コントロールに移動してこのページ内にあり、画面全体をカバーすると、ページに戻ることができなくなります。私はそのコントロールに立ち往生します。 私はこの問題を解決する方法を考えています。現在、私は2つの可能な方法を考えることができます(0)オーバーライドOnBackRequested()の背後にあるコントロールのコード内またはviewmodel? (1)OnHardwareButtonsBackPressed()をコントロールのコード内またはviewmodel?内でオーバーライドします。私はこれらが正しい方法であるか、それを行うためのより良い方法があるかどうかはわかりません。私がオーバーライドするもう一つの理由は、ページのナビゲーション動作をいくつか変更する必要があることです。UWPのページだけでなく、コントロールのバックボタンの動作をどうやって作るのですか?

答えて

0

あなたが推測したように、戻るボタンが押されたときや何か他の方法で戻るが要求されたときにコントロールを再び隠すだけでよい。ページのコードビハインドでBackRequestedイベント(HardwareButtons.BackPressedイベントではない)をリッスンし、処理方法でコントロールが現在表示されているかどうかを確認できます。私がBackRequestedイベントを推奨しているのは、ユニバーサルなので、HardwareButtons.BackPressedは電話機でのみ動作するためです。とにかく、コントロールが表示されている場合は、非表示にして、イベント引数のHandledプロパティをtrueに設定します。コントロールが既に隠されている場合は、イベントを処理するために何も特別な操作をしないでください(その場合、ナビゲーションシステムは、前のページに移動することによってナビゲーションシステムを処理する必要があります)。 Windows 10のナビゲーションには多くの側面があります - これらのページはNavigationthe SystemNavigationManagerでご覧ください。

+0

SystemNavigationManagerにいくつかの問題があります。その範囲はグローバルです。つまり、コントロールの内部で、Backを押すとBackPressedがトリガーされます。私はコントロールを非表示に設定しようとしましたが、いくつかは機能し、一部は機能しません。そして働く人にとっては、それをもう一度見えるようにするのは難しいことです。 – litaoshen

+0

参照先の記事のようにApp.xaml.csではなく、コードビハインドまたはビューモデルでBackRequestedイベントハンドラを設定することができます。こうすることで、グローバルにではなく、ページごとにバックボタンを簡単に処理できます。ちなみに、カスタムBackRequestedイベント(BootStrapper.BackRequested)を備えた堅牢なナビゲーションモデルを備えた[Template 10](https://github.com/Windows-XAML/Template10)をチェックすることをお勧めします。こうすることで、前のページに移動したり、難なくダイアログを閉じるなどの操作を行うことができます。 –

関連する問題