【发布时间】:2015-08-21 07:02:43
【问题描述】:
经过数小时的搜索,我仍然没有回答这个问题。我已经阅读了这篇关于异步 MVVM 的精彩 writing 并让我的视图模型使用工厂方法。
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;
}
}
这对我来说很清楚,但我不明白如何制作 MainViewModel 的实例并将其设置为 MainPage 中的 datacontext。我不能简单地写
<Page.DataContext>
<viewModel:MainViewModel/>
</Page.DataContext>
因为我应该使用 MainViewModel.CreateAsync() 方法。而且我不能在代码隐藏上做到这一点,我什至想这样做,因为代码隐藏 - 构造函数是普通方法,而不是异步方法。那么哪种方法才是正确的继续呢?
【问题讨论】:
-
WP8.1 != WPF。更可惜的是。期待我们能够让它们同步的那一天。
标签: c# asynchronous mvvm windows-phone-8.1