2015-12-18 28 views
4

我使用ViewModel第一種方法,我無法從一個ViewModel導航到另一個ViewModel。Caliburn微導航服務導致nullreference異常

例如,我有兩個文件夾,查看和的ViewModels和我在每個Page1View.xaml, Page2View.xamlPage1ViewModel.cs, Page2ViewModel.cs

兩個文件在我的應用程序啓動我有這樣的線下和它完美的罰款。

DisplayRootViewFor<Page1ViewModel>(); 

現在從Page1ViewModel事件單擊按鈕時,我添加了線下,我得到一個空引用異常。

_navigationService.NavitageToViewModel<Page2ViewModel>(); 

我在這裏錯過了什麼嗎?爲了提供更多信息,這是一個UWP應用程序,我使用的容器是WinRTContainer,我註冊了兩個ViewModels。

+1

首先,你確定'_navigationService'不是null嗎? –

+0

你可以發佈Stacktrace嗎? –

+1

你如何初始化NavigationService? NavigateToViewModel在UWP中已棄用,首選的方法是'_navService.For ().Navigate()' – mvermef

回答

0

您正在採用ViewModel優先方法。請注意,DisplayRootViewFor不會創建Frame控件,也不會設置NavigationService。

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

無論切換到視圖 - 第一種方法,或者在你的根視圖,設置一個的NavigationService傳遞一個框架,以它:

container.RegisterNavigationService(rootFrame);