经过几个小时的搜索,我仍然没有回答这个问题.我已经阅读了关于异步MVVM的这篇精彩文章并使我的viewmodel使用了工厂方法.
public class MainViewModel
{
// sic - public, contrary to the pattern in the article I cite
// so I can create it in the Xaml as below
public MainViewModel()
{
}
private async Task InitializeAsync()
{
await DoSomethingAsync();
}
public static async Task<MainViewModel> CreateAsync()
{
var ret = new MainViewModel();
await ret.InitializeAsync();
return ret;
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说很清楚,但我无法理解如何创建MainViewModel的实例并将其设置为MainPage中的datacontext.我不能简单地写
<Page.DataContext>
<viewModel:MainViewModel/>
</Page.DataContext>
Run Code Online (Sandbox Code Playgroud)
因为我应该使用MainViewModel.CreateAsync() - 方法.我不能在代码隐藏方面做到这一点,我甚至想做,因为代码隐藏 - 构造函数是常规方法,而不是异步方法.那么哪种方法可以继续?