0

一整天,我都在打电话

await this.NavigationService.NavigateAsync(typeof(Views.MyStankView));

一切都很好。直到我 x:将按钮单击绑定到另一个视图模型,该视图模型继承自(MVVM-Light 的)ViewModelBase 和(Template10 的)INavigable,它有一个方法

public async Task NavigateToMyStankView(object sender, RoutedEventArgs e)
{
    await this.NavigationService.NavigateAsync(typeof(Views.MyStankView));
}

呼吁

await this.NavigationService.NavigateAsync(typeof(Views.MyStankView));

被处决,但我哪儿也不去。在这个视图模型和它的父视图中,都不会调用 OnNavigatingFrom 。没有错误,没有导航。

是什么赋予了?为什么绑定/注入的视图模型的 NavigateAsync 无法导航?虽然“硬”视图模型确实导航?

编辑:经进一步检查,this.NavigationService 为空?!?为什么这样?

4

1 回答 1

0

这是预期的行为。您的视图模型的NavigationService属性由NavigationService导航期间注入。类似的东西ViewModel.NavigationService = this;。如果您正在注入视图模型,那么您正在创建它,而不是NavigationService,因此该属性为空。但这不是世界末日。NavigationService您可以通过自己设置视图模型的属性,使用主视图模型的属性值作为源来轻松解决此问题。像这样的东西var vm = new MyViewModel { NavigationService = this.NavigationService, Dispatcher = this.Dispatcher };

一个好的经验法则是,如果该NavigationService属性为空,您将无法使用它进行导航。;-) 只是开玩笑。我希望这种解决方法是有意义的。

祝你好运。

于 2016-10-31T19:30:30.477 回答