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也描述了有关约定和如何改变它的类似事情。
简单的解决办法是重命名HighlightsView.xaml是HighlightsViewPage.xaml
是的,我意识到这一点,并在我的问题中解释了......但这里的约定是什么? – sudarsanyes
我想我遵循所有的约定,期待第三个,视图名称以“Page”结尾。就像我在我的问题中提到的那样,我试图重用UWP版本中的大部分经典应用程序代码,并且由于wpf prism不包含与以“Page”结尾的视图相关的任何约束,所以我点击了一个块。有没有一种方法可以手动连线视图和视图模型? – sudarsanyes
@sudarsanyes我认为是的。你可以试试Brian的博客中的“改变那些讨厌的约定”部分吗? –