【问题标题】:Caliburn Micro navigation service resulting in nullreference exceptionCaliburn Micro 导航服务导致空引用异常
【发布时间】:2016-03-24 17:27:53
【问题描述】:

我正在使用 ViewModel First 方法,但在从一个 ViewModel 导航到另一个 ViewModel 时遇到问题。

例如,我有两个文件夹,View 和 ViewModels,Page1View.xaml, Page2View.xamlPage1ViewModel.cs, Page2ViewModel.cs 各有两个文件

在我的应用程序启动中,我有下面这行,它工作得很好。

DisplayRootViewFor<Page1ViewModel>();

现在,当我添加下面的行时,从Page1ViewModel 事件单击按钮,我得到一个空引用异常。

_navigationService.NavitageToViewModel<Page2ViewModel>();

我在这里错过了什么吗?为了提供更多信息,这是一个 UWP 应用程序,我使用的容器是 WinRTContainer,并且我已经注册了两个 ViewModel。

【问题讨论】:

  • 首先,您确定_navigationService 不为空吗?
  • 你能发布一个 Stacktrace 吗?
  • 你是如何初始化 NavigationService 的? NavigateToViewModel 在 UWP 中已弃用,首选方法是 _navService.For&lt;T&gt;().Navigate()
  • 我现在也有类似的问题。你解决了吗?怎么解决的?

标签: windows-phone windows-10 caliburn.micro uwp


【解决方案1】:

您正在采用 ViewModel 优先的方法。请注意,DisplayRootViewFor 不会创建 Frame 控件,也不会设置 NavigationService。

看看: https://github.com/Caliburn-Micro/Caliburn.Micro/issues/126

要么切换到视图优先的方法,要么在你的根视图中,设置一个 NavigationService 并将一个 Frame 传递给它:

container.RegisterNavigationService(rootFrame);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2011-06-09
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多