Mvvm从ViewModel的构造函数中导航

时间:2016-11-24 15:48:55

标签: c# uwp mvvm-light

我正在为运行Windows 10 IoT Mobile的设备开发内部应用程序,因此使用UWP。我正在使用Mvvm Light工具包。应用程序需要用户登录(没有什么花哨的,只记录他们的名称用于记录目的),因此如果未设置此值(通过保存的设置),应用程序的主ViewModel将导航到登录页面。 / p>

我在使用Mvvm Light导航服务时遇到了问题。如果您尝试从ViewModel的构造函数中导航,则不会发生任何事情。

例如,在Visual Studio中,创建一个新的Mvvmlight(Win10Univ)项目。这将创建一个带有一些导航的示例应用程序。

现在将导航代码放在构造函数中,例如:

public MainViewModel(IDataService dataService, INavigationService navigationService)
{
    _dataService = dataService;
    _navigationService = navigationService;
    _navigationService.NavigateTo(ViewModelLocator.SecondPageKey, "12321");
    Initialize();
}

这个新的代码行看起来什么也没做,debbugger直接踩到它,而在Output窗口中没有任何内容。

有人认为,此时模拟器仍然显示启动画面,那么可能是因为应用程序未在此时完全创建?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能是因为您的申请尚未Loaded

检查this问题和接受的答案。

基本上,它建议将(通过交互行为EventTrigger)命令绑定到视图模型的Loaded事件。

然后您应该将导航放在该命令中。