带有PCL的通用应用程序 - 导航到正确的视图

时间:2014-09-04 12:53:56

标签: windows-8.1 mvvm-light windows-phone-8.1 portable-class-library win-universal-app

我怀疑是否有可能以某种方式使用此项目结构,并且在某些ViewModel内导航到Core.Windows / Core.WindowsPhone的特定视图。

1。 PCL库

核心(适用于通用应用的PCL)

  • 视图模型

Core.Windows(PCL) - 对Core的引用

  • 查看

Core.WindowsPhone(PCL) - 对Core的引用

  • 查看

我需要在PCL中保留View,因为我对其他一些项目使用相同的View。

2。通用应用

Windows - 对Core,Core.Windows的引用

WindowsPhone - 对Core,Core.WindowsPhone的引用

共享

1 个答案:

答案 0 :(得分:1)

是的,我认为这是可能的。

我的解决方案中有类似的要求(对不同的应用使用相同的视图)

基本上我建议如下:

1)在Core中创建一个NavigationService抽象类和/或INavigationService接口(使用ViewModels的通用应用程序的PCL)。

2)在Core.Windows和Core.WindowsPhone中创建WindowsNavigationService和WindowsPhoneNavigationService类,这些类派生自1中的NavigationService

此类可以执行以下操作:

1)持有

的实例
   Dictionary<ViewModelBase,Page> mapDictionary

ViewModelBase是viewmodel的基类(我想你有一个)。

2)在mapDictionary中注册数据:例如添加View和相应的ViewModel

3)执行持有Fr​​ame实例的导航购买:例如NavigateTo,GoBack等

4)将ViewModel绑定到View。

之后,您可以在ViewModel中保留NavigationService并在它们之间执行导航。

如果您对此类方法感兴趣,我建议您浪费一些时间并查看https://github.com/MvvmCross/MvvmCross - 这可以为您提供有关如何构建架构的建议。

关于PCL的有趣帖子(示例代码演示了所描述的方法):http://msdn.microsoft.com/en-us/magazine/hh852593.aspx

文章的源代码:http://download.microsoft.com/download/6/2/D/62D36C65-4C36-429A-8711-F657D34AB4BC/Code_KeanPCL0312.zip