我尝试在导航完成后初始化viewmodel实例。
为什么呢?因为我想从webservice中检索一些数据到视图中。
我有这样的事情:
await NavigationService.NavigateAsync(new Uri("http://myapp.com/MainNavigationPage/DashboardPage?initialized=true"
, UriKind.Absolute)
, useModalNavigation: false);
所以我的问题是:
有没有办法为该特定视图获取已创建的viewmodel实例?
我想做的事情就像Stephen Cleary在帖子中提到的那样: http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html
var context = (Instance of viewModel for my view);
await context.InitializeAsync();
这可能吗?
提前致谢
答案 0 :(得分:1)
只需使用INavigationAware接口并响应OnNavigatingTo / OnNavigatedTo方法即可加载数据。建议不要在ctor中加载异步数据。 OnNavigatingTo方法是当前6.3预览中可用的新方法。
另一种选择是覆盖ViewModelLocationProvider.SetDefaultViewModelFactory方法,并在首次创建VM时调用异步初始化方法。您可以使用当前代码作为指导:
您还可以尝试使用Container.RegisterInstance方法为视图提供预配置的VM。