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