小编Pau*_*mma的帖子

MVVM如何在viewmodel使用async时设置datacontext

经过几个小时的搜索,我仍然没有回答这个问题.我已经阅读了关于异步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() - 方法.我不能在代码隐藏方面做到这一点,我甚至想做,因为代码隐藏 - 构造函数是常规方法,而不是异步方法.那么哪种方法可以继续?

c# asynchronous mvvm windows-phone-8.1

5
推荐指数
1
解决办法
2412
查看次数

标签 统计

asynchronous ×1

c# ×1

mvvm ×1

windows-phone-8.1 ×1