从视图模型导航到新页面

时间:2011-08-18 07:33:32

标签: c# windows-phone-7 mvvm

我已经将WP7 DataBound应用程序模板用于我的程序,它使用了一种MVVM形式。我想从我的主页导航到我的设置页面,但由于它是加载数据的VM,这反过来决定了是否需要加载设置页面,我想从VM调用导航代码,而不是视图。但是,NavigationService不会仅在视图中显示VM中的Navigate方法。有没有人对我如何/应该在VM中调用Navigate方法有任何建议?

谢谢,

杰森。

2 个答案:

答案 0 :(得分:1)

我倾向于使用以下其中一种

  • 在VM中发布事件,在视图中订阅
  • 实现全局NavigationService(使用ServiceLocator模式或DI),例如,您可以在应用程序类中实现这样的接口

答案 1 :(得分:1)

App.xaml.cs中将其作为静态方法实施,就像这样

public static void Navigate(Uri source)
{
    Dispatcher.BeginInvoke(() => (App.Current.RootVisual as PhoneApplicationFrame).Navigate(source));
}

这样您只需从任何地方拨打App.Navigate(uri)即可。

您可能还想实施GoBack()

public static void GoBack()
{
    Dispatcher.BeginInvoke(() => (App.Current.RootVisual as PhoneApplicationFrame).GoBack());
}