我目前正在开发一个包含 2 页(page1
,page2
)的 Windows 8 应用程序。
将表单 page1 导航到 page2 后,使用this.Frame.Navigate(typeof(AnotherPage));
我如何访问page2
表单的实例page1
,(我们可以通过具有静态实例属性来实现它并在调用构造函数时设置它)
但是是否有任何内置功能可以从当前页面外部访问页面的当前实例,或者在 WinRT 范例中推荐这种编程模式,有没有办法实现我的场景。
我目前正在开发一个包含 2 页(page1
,page2
)的 Windows 8 应用程序。
将表单 page1 导航到 page2 后,使用this.Frame.Navigate(typeof(AnotherPage));
我如何访问page2
表单的实例page1
,(我们可以通过具有静态实例属性来实现它并在调用构造函数时设置它)
但是是否有任何内置功能可以从当前页面外部访问页面的当前实例,或者在 WinRT 范例中推荐这种编程模式,有没有办法实现我的场景。
第一件事是 - 默认情况下,在默认情况下导航到下一页后,上一页的实例不会保存在内存中 - 除非您更改页面的默认 NavigationCacheMode,否则这可能不是一个好主意,除非页面采用加载时间很多,就像您经常返回的中心页面。
我建议的方法是使用MVVM模式,因此页面永远不必相互交谈,而视图模型可以做到这一点。然后使用 pub/sub 模式和 MVVM Light Toolkit 中的 Messenger 类等助手来发送弱事件/消息,而不是在对象之间添加紧密耦合。
总而言之 - 这取决于您想要做什么以及为什么您希望您的页面相互交谈。您可以在 Navigate() 调用中传递一个参数(如果您想使用 SuspensionManager 类和 Frame 类的内置序列化来支持应用程序暂停,请确保它只是一个原始类型)。您还可以使用某种全局存储库或设置服务在页面之间共享数据。
如果您不愿意投资这些东西 - 使用普通的旧静态类可能对您来说就足够了。什么都行。