调用异步方法在viewmodel的构造函数中加载数据有一个警告

All*_*ech 14 .net c# wpf asynchronous async-await

我的视图包含一个ListView,它显示来自互联网的一些数据,我创建了一个异步方法来加载数据并在我的viewmodel的构造函数中调用该方法.它有一个警告提示我现在使用await关键字.

在构造函数中异步加载数据的任何其他解决方案?

Yuv*_*kov 18

有一些可以应用的模式,所有这些都在Stephan Cleary的帖子中提到过.

但是,让我提出一些不同的东西:

由于您在WPF应用程序中,我将使用该FrameworkElement.Loaded事件并将其绑定到ICommandViewModel内部.有界命令将是一个Awaitable DelegateCommand可以等待的命令.我也会利用System.Windows.Interactivity.InvokeCommandAction

查看XAML:

<Grid>
 <interactivity:Interaction.Triggers>
     <interactivity:EventTrigger EventName="Loaded">
         <interactivity:InvokeCommandAction Command="{Binding MyCommand}"/>
     </interactivity:EventTrigger>
 </interactivity:Interaction.Triggers>
</Grid>
Run Code Online (Sandbox Code Playgroud)

视图模型:

public class ViewModel
{
    public ICommand MyCommand { get; set; }

    public ViewModel()
    {
        MyCommand = new AwaitableDelegateCommand(LoadDataAsync);
    }

    public async Task LoadDataAsync()
    {
        //await the loading of the listview here
    }
}
Run Code Online (Sandbox Code Playgroud)