Windows Phone OS 7.1からローカルだけで、タイル画像が変更出来るようになりました(WP OS 7.0はPushでのみタイル画像の変更が可能)。
分離ストレージの画像をタイルの背景に適用する場合、あらかじめ画像を「isostore:/Shared/ShellContent/」へ書き込んでおく必要があります。
// タイル用パスへ書き込む(アプリ領域->共有領域) var store = IsolatedStorageFile.GetUserStoreForApplication(); using (var reader = store.OpenFile("tile.jpg", System.IO.FileMode.Open)) using (var writer = store.CreateFile("Shared/ShellContent/tile.jpg")) { reader.WriteTo(writer); var bytes = new byte[256 * 1024]; while (true) { int read = reader.Read(bytes, 0, bytes.Length); if (read <= 0) break; writer.Write(bytes, 0, read); } } // アクティブなタイルからアプリ自分自身のタイルを取得 var myTile = ShellTile.ActiveTiles.ToObservable().First(); if (myTile != null) { // タイル情報を生成 var tile = new StandardTileData { BackgroundImage = new Uri("isostore:/Shared/ShellContent/tile.jpg", UriKind.Absolute), Title = "某時計", BackContent = "タイルの裏12345678901234567890", BackTitle = " 裏のタイトル" }; // アプリタイルを更新 myTile.Update(tile); }
上記のコードを実行すると、ホーム画面のタイルにはこんな感じで表示されます。
裏にはこんな感じで表示されます。大体イメージつきますでしょうか。BackContentに設定した「タイルの裏12345678901234567890」が全て表示出来ずに2行目で切れてしまっています。
(追記)既にアプリ内に保存している画像を表示する場合
既にアプリ内に保存している画像を表示する場合は、isostore:/Shared/ShellContent/の代わりにappdata:/Background.pngなど、appdataスキーマを使用すると良いでしょう。コードとしては以下のようになります。