我想在我的 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-are-on-the-way-part-1.aspx
基本上,当您想要墓碑时,您需要使用 Application_Deactivated 事件将您的变量存储在隔离存储中,并使用 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 { }
};
}