少し本題に戻ってセカンダリ タイルから起動された事を判別する方法。
昨日までは 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 の頃よりも少し手間が増えているような気がしますね。