複数のページを持つアプリケショーンでは、[戻る]ボタンを実装したい場合があります。
今回は、この戻るボタンを実装する方法について見ていきましょう。
「メニューを表示する」と「メニュークリック時の処理を実装する」の記事でハンバーガーメニューによるページの切り替えをしました。
ページが表示されたときに「戻る」ボタンを表示するには、Windows.UI.Core.SystemNavigationManager.GetForCurrentView()
.AppViewBackButtonVisibilityプロパティに以下表の値を設定します。
値 | 説明 |
AppViewBackButtonVisibility.Visible | [戻る]ボタンを表示 |
AppViewBackButtonVisibility.Collapsed | [戻る]ボタンを非表示 |
[戻る]ボタンを表示するべきかどうかは、そのFrameが前のページに戻れる状態であるかどうかを確認する必要があります。これはFrame.CanGoBackで確認をします。
これをどのタイミングで行うかというと、ページが表示されたタイミングで行います。
「ページが表示されたタイミング」というのは、OnNavigatedToイベントが発生した場合を指します。
また、[戻る]ボタンが押された場合には、実際に以前表示していたページへ戻す必用があります。[戻る]ボタンが押された場合はBackRequestedイベントが発生するので、このイベントの中で戻す処理を行います。
以下にコード例を示します。このコードは[戻す]ボタンを表示したい遷移先となるページに実装をします。
using Windows.UI.Core; // 忘れずに! // ページ表示時 protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); // [戻る]ボタンを表示するかどうかを設定する SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = Frame.CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed; //[戻る]ボタンが押されたときのイベントを結び付ける Windows.UI.Core.SystemNavigationManager.GetForCurrentView() .BackRequested += Page_BackRequested; } // [戻る]ボタンを押したときの処理 private void Page_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e) { if (Frame.CanGoBack) { Frame.GoBack(); e.Handled = true; } }
最後に[戻る]ボタンが押されたときの処理を実装します。[戻る]ボタンを押す = ページを離れる ことになるので、この場合、[戻る]ボタンに紐付けていたイベントハンドラーの解除をします。
// ページを離れる場合の処理 protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { base.OnNavigatingFrom(e); // [戻る]ボタンのイベントハンドラーを解除 SystemNavigationManager.GetForCurrentView() .BackRequested -= Page_BackRequested; }
事項例を以下に示します。ページが遷移し、戻ることができるページがある場合には、左上に[戻る]ボタンが表示されます。
ハンバーガーメニューの関連Tips
Please follow and like us:
コメント