2013-03-20 58 views
1

我有一个包含3个项目的可移植类库。便携式类库:导航到xaml页面

  • 共同类的Windows Phone和Windows平板电脑项目
  • 项目的Windows Phone
  • Project的Windows平板电脑

在我共同的项目,我有一个文件夹模式和文件夹视图模型。 在我的Windows Phone项目中,我有一个文件夹视图。

是否可以从公共项目的viewmodel文件夹中的类导航到Windows Phone项目的视图文件夹中的xaml页面?

NavigationService.Navigate();在这里不起作用,我找不到任何nuget包来包含这个。

所以我的问题是:

  • 是否有另一种方式来浏览到XAML页面?
  • 或者是否有nuget包在公共项目中添加NavigationService

回答

1

NavigationService类在PCL中不可用。您可以通过查看documentation on MSDN并点击“其他版本”下拉菜单来确认。

你应该使用事件。说,你的视图模型类可能有一个名为NavigationRequested一个事件,你提高呼叫NavigationService.Navigate()的,而是和你的看法订阅该事件像这样的东西:

ViewModel.NavigationRequested += (s, e) => NavigationService.Navigate(GetUrlFor(e.PageId)); 
+0

感谢您的快速回复,我会尝试一下 – Batsman 2013-03-20 14:38:36

0

在MvvmCross我们通过导航到视图模型,而不是查看为此类型的导航。

以这种方式工作,该框架拦截ViewModel导航并以平台特定的方式解释它 - 例如,:

  • 上的WindowsPhone它使用了XAML中的URL
  • 在WindowsStore它使用的导航服务
  • 在Android上,它使用意图

对于自己的框架,你应该能够产生类似的抽象 - 只要ViewModel启动一个抽象的导航,然后在每种情况下使用平台特定的代码来处理细节。