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

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

问题描述:

我使用Prism来处理UWP,并且我已将PrismUnityApplication中的应用程序基于类别。 我已经覆盖OnLaunchApplicationAsync,我试图打电话,NavigationService.Navigate在Prism中为UWP调用时抛出异常

NavigationService.Navigate("HighlightsView", null); 

调用时,程序会抛出异常,

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

我有一个文件夹命名视图和我有一个命名视图HighlightsView在名称空间Panda.UWP.Views下。

在这里有一个命名约定吗?因为如果我将我的视图从重新命名亮点查看亮点页面,那么一切似乎工作得很好!

是否有一个命名约定在这里遵循?

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

ViewModelLocator类使用附加属性AutoWireViewModel将视图模型与视图关联,只要此属性设置为True。有关会议的详细信息,请参考Dave's Tech Blog

  • 查看模型是在同一程序的视图类型。

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

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

  • 查看模型位于.ViewModels子名称空间中。

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

该博客还提供了如何覆盖Prism的默认约定,您可以参考。 Brian's blog也描述了有关约定和如何改变它的类似事情。

+0

我想我遵循所有的约定,期待第三个,视图名称以“Page”结尾。就像我在我的问题中提到的那样,我试图重用UWP版本中的大部分经典应用程序代码,并且由于wpf prism不包含与以“Page”结尾的视图相关的任何约束,所以我点击了一个块。有没有一种方法可以手动连线视图和视图模型? – sudarsanyes

+1

@sudarsanyes我认为是的。你可以试试Brian的博客中的“改变那些讨厌的约定”部分吗? –

简单的解决办法是重命名HighlightsView.xaml是HighlightsViewPage.xaml

+1

是的,我意识到这一点,并在我的问题中解释了......但这里的约定是什么? – sudarsanyes