1

我有一个带有 3 个项目的可移植类库。

  • 适用于 Windows Phone 和 Windows 平板电脑的通用类项目
  • Windows Phone 项目
  • 适用于 Windows 平板电脑的项目

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

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

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

所以我的问题是:

  • 还有另一种导航到 xaml 页面的方法吗?
  • 或者是否有一个nuget包可以添加到NavigationService公共项目中?
4

4 回答 4

1

NavigationService课程在 PCL 中不可用。您可以通过查看MSDN 上的文档并单击“其他版本”下拉菜单来确认这一点。

你应该使用事件。说,您的 viewmodel 类可能有一个名为 的事件NavigationRequested,您引发而不是调用NavigationService.Navigate(),并且您的视图通过以下方式订阅该事件:

ViewModel.NavigationRequested += (s, e) => NavigationService.Navigate(GetUrlFor(e.PageId));
于 2013-03-20T14:23:02.750 回答
0

我已经将http://azerdark.wordpress.com/2010/04/23/multi-page-application-in-wpf/用于几个具有多页的项目,它可能对你也有用,希望它有帮助.

于 2013-03-20T14:18:30.220 回答
0

这是一个示例,它几乎准确地显示了如何执行此操作:共享代码:添加 NavigationService

以下是有关使用可移植类库的更一般信息的一些来源:

于 2013-03-20T18:18:06.877 回答
0

在 MvvmCross 中,我们通过导航到 ViewModel 而不是 View 来执行这种类型的导航。

以这种方式工作,框架拦截 ViewModel 导航并以特定于平台的方式对其进行解释 - 例如:

  • 在 WindowsPhone 上,它使用 Xaml url
  • 在 WindowsStore 上它使用导航服务
  • 在 Android 上它使用 Intents

对于您自己的框架,您应该能够产生类似的抽象 - 只需让 ViewModel 启动到抽象的导航,然后让特定于平台的代码处理每种情况下的细节。

于 2013-04-22T21:21:15.307 回答