かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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;
    }
};