Mvx には、いくつかの単純なライブ タイル/ブックマークを追加できる 1 つのサンプル サービスが含まれています - MvxWindowsPhoneLiveTileBookmarkLibrarian.cs
これは現在 WP7 にのみ実装されていますが、将来的には同じテンプレートを使用して Android と WinRT のブックマークも可能になる可能性があります。
ライブラリアン サービスを使用する場合は、次のような方法を試してください。
IMvxBookmarkLibrarian librarian;
if (!this.TryGetService<IMvxBookmarkLibrarian>(out librarian))
{
// not much can be done...
return;
}
var metadata = new BookmarkMetadata()
{
Title = detail.Name,
};
var uniqueName = "DetailBookmark" + detail.UniqueId;
librarian.AddBookmark(
typeof(DetailViewViewModel),
uniqueName,
metadata,
new Dictionary<string, string>()
{
{ "detailId", detail.UniqueId }
});
これにより、TileData とタイルの Xaml Uri を生成する WP7 コードが呼び出されます。URI がどのように生成されるかを理解するには、 librarian のコードを参照しGetXamlUriFor
てください。
この既存のサンプル サービスを「そのまま」使用する場合、メタデータで現在使用できるフィールドは次のとおりです。
public Uri BackgroundImageUri { get; set; }
public string Title { get; set; }
public Uri BackBackgroundImageUri { get; set; }
public string BackTitle { get; set; }
public string BackContent { get; set; }
public int Count { get; set; }
しかし、これらのフィールドは現在確かに WP7 固有のものです。たとえば、画像 Uri がさまざまなプラットフォーム間で非常に再利用可能になるとは思えません。
実用的なレベルでは、ライブ タイルの多くのカスタマイズを必要とするもの (ダウンロードした画像など) を開発するときは、通常、既存のコードに基づいて新しい単純な BookmarkLibrarian サービスを構築し、このカスタマイズされたコードを WP7 UI コードに配置します。そのプロジェクト(そしてViewModelに注入されたインターフェースです)
このカスタマイズされたアプローチにより、ブックマーク API がはるかに単純になり、(共有コア プロジェクトではなく) WP7 アプリケーション プロジェクト内に WP7 固有のロジックを記述できるようになります。
カスタム ブックマーク サービスを作成するための鍵は、ナビゲーション URI が1でどのように生成されるかを理解することです -近くのコードを参照してください- URI は、このブックマークの一意の名前を示すクエリ パラメータをGetXamlUriFor
シリアル化し、追加することによって作成されます。MvxShowViewModelRequest
この方法でブックマークを追加したら、WP7 App.xaml.cs の「通常の」開始ナビゲーション コードを次のように調整できます。
RootFrame.Navigating += (innerSender, args) =>
{
if (!_firstNavigation)
return;
_firstNavigation = false;
var applicationStart = this.GetService<IMvxStartNavigation>();
if (args.Uri.ToString().Contains("MainPage.xaml")
|| !applicationStart.ApplicationCanOpenBookmarks)
{
args.Cancel = true;
RootFrame.Dispatcher.BeginInvoke(applicationStart.Start);
}
};
このコードにより、ブックマークを直接開くことができます。
タイルを更新して「ライブ」にするコード (エージェントなど) を実行する必要がある場合は、自分で行う必要があります。 Android と WP7 の両方で非 UI プロジェクトで Mvx を使用しました。