2013-02-10 31 views
0

我有一个两页的Windows 8应用程序。一个查看页面和一个设置页面。两个页面都使用相同的视图模型。我可以在页面之间传递视图模型来处理它,但是我不能保存状态,因为我已经在页面之间传递了一个复杂类型(它与它们如何保持引用并阻止您保存)。WinRT在页面间传递ViewModel

所以我想我需要保存并重新加载我的视图模型在每个页面上?对于什么是最佳做法,我找不到很好的参考。

回答

2

通常WinRT通过根框架,在App.cs.中初始化。最好在MainPage中定义一个Frame对象,然后浏览这个框架内的所有页面。您的frame datacontext可以绑定到ViewModel。

+0

这就是答案。我将数据上下文设置为页面而不是静态框架。然后我将它保存并加载到app.cs中,一切都很好。 – 2013-02-16 06:28:09

0

您可以使用Frame在页面导航之间保存ViewModel状态。我正在写一个应用程序(针对不同页面使用相同的viewmodel)有类似的情况,并且它完美地工作。它甚至会为你缓存页面。

I blogged最近关于使用Frame with ViewModels,但它更多的是设置框架交互而不是导航/缓存行为。