WP7アプリにトゥームストーニングを実装したいのですが、このアプリはMVVMパターンに基づいていません。それを実装するために、誰かが私にその良い例を紹介してもらえますか?したがって、いくつかの汎用クラスを使用してアプリの状態を維持できます。
1 に答える
これは、それをかなりうまく説明しているいくつかのリンクです:
これは、一時停止とトゥームストーンの違いなど、管理する必要のあるさまざまな状態をうまく説明しています。 http://lnluis.wordpress.com/2011/09/25/fast-application-switching-in-windows-phone/
Shawn Wildermuthは本当に優れており、このビデオで実装方法を示しています。 http://vimeo.com/14311977
これが詳細に説明しているブログ投稿です http://xna-uk.net/blogs/darkgenesis/archive/2010/11/08/there-and-back-again-a-tombstoning-tale-the-return-of -the-application.aspx
これは、Windows Phone開発者ブログからのものです: http ://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/07/15/understanding-the-windows-phone-application-execution-model-tombstoning-launcher -and-choosers-and-few-more-things-that-on-the-way-part-1.aspx
基本的に、トゥームストーンする場合は、Application_Deactivateイベントを使用して変数を分離ストレージに格納し、Application_Activatedイベントを使用してそれらを取得する必要があります。Mangoの登場(昨年の秋)では、Application_Activatedにテストを入れて、アプリが一時停止状態から来ているかどうかを確認する必要があります。
if (!e.IsApplicationInstancePreserved)
{
//do stuff to restore from tombstoned
}
別の例を追加するために編集してください:たぶん、この追加の簡単な例があなたを助けるでしょう。 http://dotnet-redzone.blogspot.com/2010/09/windows-phone-7-scrollbar-position.html
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
// Remember scroll offset
try
{
ScrollViewer viewer = ((VisualTreeHelper.GetChild(listBox, 0) as FrameworkElement).FindName("ScrollViewer") as ScrollViewer);
State["scrollOffset"] = viewer.VerticalOffset;
}
catch { }
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
object offset;
// Return scroll offset
if (State.TryGetValue("scrollOffset", out offset))
listBox.Loaded += delegate
{
try
{
ScrollViewer viewer = ((VisualTreeHelper.GetChild(listBox, 0) as FrameworkElement).FindName("ScrollViewer") as ScrollViewer);
viewer.ScrollToVerticalOffset((double)offset);
}
catch { }
};
}