NavigationService.Navigate 在 Prism 中调用 UWP 时抛出异常
NavigationService.Navigate throwing exception when called in Prism for UWP
我正在为 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,那么一切似乎都运行良好!
简单的解决方案是将 HighlightsView.xaml 重命名为 HighlightsViewPage.xaml
Is there a naming convention to be followed here?
简短的回答是肯定的。 Windows 运行时的 Prism 指定了一个 ViewModelLocator
对象,可用于管理视图模型的实例化及其与视图的关联。这种方法的优点是只有一个 class 负责视图模型实例化。
ViewModelLocator
class uses an attached property, AutoWireViewModel
, to associate view models with views once this property is set to True. For more details about the convention please reference Dave's Tech Blog:
视图模型与视图类型位于同一程序集中。
视图位于 .Views 子命名空间中。
视图名称以“Page”结尾。
视图模型位于 .ViewModels 子命名空间中。
视图模型名称与视图名称对应,以“ViewModel”结尾。
该博客还提供了如何覆盖 Prism 的默认约定,您可以参考。 Brian's blog 还描述了关于约定的类似内容以及如何更改它。
我正在为 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,那么一切似乎都运行良好!
简单的解决方案是将 HighlightsView.xaml 重命名为 HighlightsViewPage.xaml
Is there a naming convention to be followed here?
简短的回答是肯定的。 Windows 运行时的 Prism 指定了一个 ViewModelLocator
对象,可用于管理视图模型的实例化及其与视图的关联。这种方法的优点是只有一个 class 负责视图模型实例化。
ViewModelLocator
class uses an attached property, AutoWireViewModel
, to associate view models with views once this property is set to True. For more details about the convention please reference Dave's Tech Blog:
视图模型与视图类型位于同一程序集中。
视图位于 .Views 子命名空间中。
视图名称以“Page”结尾。
视图模型位于 .ViewModels 子命名空间中。
视图模型名称与视图名称对应,以“ViewModel”结尾。
该博客还提供了如何覆盖 Prism 的默认约定,您可以参考。 Brian's blog 还描述了关于约定的类似内容以及如何更改它。