NavigationService.Navigate在Prism中为UWP调用时抛出异常

时间:2017-08-08 10:31:07

标签: c# uwp prism uwp-xaml prism-6

我正在为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 ,那么一切似乎都运行正常!

2 个答案:

答案 0 :(得分:2)

  

这里是否有遵循命名惯例?

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

ViewModelLocator类使用附加属性AutoWireViewModel,一旦此属性设置为True,即可将视图模型与视图相关联。有关该会议的更多详细信息,请参阅Dave's Tech Blog

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

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

  • 查看名称以“Page”结尾。

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

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

博客还提供了如何覆盖Prism的默认约定。 Brian's blog还描述了有关约定的类似内容以及如何更改它。

答案 1 :(得分:0)

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