kazuakix の日記

Windows Phone とか好きです

セカンダリ タイルからの起動を判別する方法 (4)

少し本題に戻ってセカンダリ タイルから起動された事を判別する方法。

昨日までは App.xaml.cs の OnLaunched の引数 e.Arguments に値がセットされていればセカンダリタイルからの起動...と決めつけていたのですが、よく見ると e.TileId というものがありました。普通のタイルの場合は "App" 、セカンダリ タイルから起動された場合はそのタイルを作るときに指定した ID が渡されるようです。
 
なので、セカンダリ タイルからの起動を判別するのはこんな感じ?

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;

    if (rootFrame == null)
    {
        // 省略
    }

    if (rootFrame.Content == null)
    {
        // 省略
    }

    if (e.TileId == "SecondaryTile01")
    {
        // セカンダリ タイル 01 の処理
        rootFrame.Navigate(typeof(BlankPage1), e.Arguments);
    }
    else if (e.TileID == "secondaryTile02")
    {
        // セカンダリ タイル 02 の処理
        rootFrame.Navigate(typeof(BlankPage2), e.Arguments);
    }
    else // e.TileID == "App"
    {
        // メインタイルの処理
        rootFrame.Navigate(typeof(MainPage), e.Arguments);
    }

    Window.Current.Activate();
}

あとは戻るボタン対策の BackStack ももう少しよく考える必要がありそうです。 Silverlight の頃よりも少し手間が増えているような気がしますね。