注册导航服务到框架元素而不是页面 - WinRt Prism 2.0

时间:2014-11-21 12:17:36

标签: mvvm windows-runtime windows-store-apps prism

任何人都可以提供帮助。

我们正在开发一个具有一致页眉和页脚的应用程序,因此理想情况下我们将使用一个viewmodel作为“主页”,但我们希望页眉和页脚保留。

在我们开始使用Prism之前,这很容易导航,因为我们可以在Pages事件中控制它并将page.contentFrame.Navigate方法设置为我们想要的位置。

现在我们正在使用MVVM结构(这很棒,希望我很久以前就完成了),NavigationService类只导航整个页面(VisualStateAware页面)。

如何设置它以便在viewmodel中的界面上调用Navigate方法时,只导航主内容框架?还是有更好的方法吗?

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

问题标题似乎是将问题的细节略微作为一种解决方案。但是要在一个框架内共享所有页面上的公共视图模型和可视化部分,使用导航服务在页面之间导航是一个概述..

  1. 创建一个共享的ViewModel,比如“HeaderViewModel”,类型为IHeaderViewModel,以便在不同页面的视图模型之间共享。将其注入每个页面的ViewModel的构造函数。

  2. 然后将其公开为每个页面的ViewModel的属性。此属性也可以称为HeaderViewModel。然后,您可以使用绑定“。”在视图中的绑定中引用此常见HeaderViewModel的属性。符号

  3. 如果您使用Unity with Prism,则可以在App的OnInitialize覆盖中创建此共享实例HeaderViewModel。

  4. 为每个Page / View创建一个共享部分作为UserControl,可以在同一个地方的每个页面上定位。这使您可以绑定到HeaderViewModel上的相同属性。