0

我正在为 UWP 使用 Prism,并且我已经从 PrismUnityApplication 对我的应用程序进行了基础分类。我已经覆盖了 OnLaunchApplicationAsync 并且我正在尝试调用,

NavigationService.Navigate("HighlightsView", null); 

调用时,程序抛出异常,

{"The page name HighlightsView does not have an associated type in namespace Panda.UWP.Views\r\nParameter name: pageToken"}

我确实有一个名为 Views 的文件夹,并且在命名空间 Panda.UWP.Views 下确实有一个名为 HighlightsView 的视图。

这里有要遵循的命名约定吗?因为如果我将视图从HighlightsView重命名为HighlightsPage,那么一切似乎都运行良好!

4

2 回答 2

2

这里有要遵循的命名约定吗?

简短的回答是肯定的。Windows 运行时的 Prism 指定了一个ViewModelLocator对象,该对象可用于管理视图模型的实例化及其与视图的关联。这种方法的优点是有一个类负责视图模型实例化。

一旦该属性设置为 True ViewModelLocator ,该类使用附加属性 ,AutoWireViewModel将视图模型与视图相关联。有关大会的更多详细信息,请参考Dave 的技术博客

  • 视图模型与视图类型在同一个程序集中。

  • 视图位于 .Views 子命名空间中。

  • 视图名称以“Page”结尾。

  • 视图模型位于 .ViewModels 子命名空间中。

  • 视图模型名称与视图名称相对应,并以“ViewModel”结尾。

该博客还提供了如何覆盖您可以参考的 Prism 的默认约定。Brian 的博客还描述了有关约定的类似内容以及如何更改它。

于 2017-08-09T03:02:48.510 回答
0

简单的解决方案是将 HighlightsView.xaml 重命名为 HighlightsViewPage.xaml

于 2017-08-08T10:49:13.543 回答