在WinRT中获取外部页面实例

时间:2012-10-29 15:16:43

标签: c# microsoft-metro windows-runtime

我目前正在开发一个包含2个页面(page1page2)的Windows 8应用程序。

将表单page1导航到page2后, 使用this.Frame.Navigate(typeof(AnotherPage));  如何访问page2表单page1的实例,( 我们可以通过拥有静态实例属性来实现它,并在调用构造函数时设置它

但是有没有任何内置功能可以从当前页面外部访问页面的当前实例,或者在WinRT范例中推荐这种编程模式,有没有办法实现我的场景。

1 个答案:

答案 0 :(得分:0)

首先是 - 默认情况下,默认情况下导航到下一页后,前一页的实例不会保留在内存中 - 除非您更改页面的默认NavigationCacheMode,否则这可能不是一个好主意,除非页面需要花费大量的时间来加载,就像一个中心页面,你会回到很多地方。

我建议的方法是使用MVVM模式,因此页面永远不必彼此交谈,它就是视图模型。然后使用带有助手的pub / sub模式,如MVVM Light Toolkit中的Messenger类,发送弱事件/消息,而不是在对象之间添加紧密耦合。

总而言之 - 这取决于您想要做什么以及您希望页面彼此交谈的原因。您可以在Navigate()调用中传递一个参数(确保它只是一个基本类型,但是如果您想使用SuspensionManager类和Frame类的内置序列化来支持应用程序暂停)。您还可以使用某种全局存储库或设置服务在页面之间共享数据。

如果你不愿意投资这些东西 - 使用普通的静态类可能就足够了。无论什么都有效。