かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Universal Windows Platform appでタイトルバーに戻るボタンを出す方法

UWP appで一部アプリにタイトルバーに戻るボタンが出てるものがあります。 例えばストアのアプリとかそうなってます。

f:id:okazuki:20150711222136p:plain

これをやるには、SystemNavigationManagerクラスを使います。

Appクラスの起動処理のどこかにこの1行を足します。

SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

そうすると、Windowのタイトルバーに戻るボタンが出るようになります。

f:id:okazuki:20150711222458p:plain

戻る処理のハンドリング

このようにUWP appのデスクトップ向けでは戻るボタンを表示することができます。さらにタブレットモードではスタートボタンの横に戻るボタンが出ます。電話には戻るボタンがついています。ということでこれらの戻る処理に対応するためには、SystemNavigationManagerのイベントを購読するのが一番スマートです。(電話の戻るボタンだけに対応するような処理を書いてるとデスクトップやタブレットの戻るに対応できない状態になる)

このようにSystemNavigationManagerのBackRequestedイベントを購読してその中でページを戻る処理を追加するといいです。

SystemNavigationManager.GetForCurrentView().BackRequested += (_, args) =>
{
    if (rootFrame.CanGoBack)
    {
        rootFrame.GoBack();
        args.Handled = true;
    }
};