C# Windows 8应用商店长期运行进程

C# Windows 8应用商店长期运行进程,c#,windows-8,winrt-xaml,windows-store-apps,C#,Windows 8,Winrt Xaml,Windows Store Apps,我有一个web服务,它将从存储在Azure中的数据库返回大约360个条目。在我的ModelView中,我执行了一个异步调用来检索数据,但是ModelView的绑定在异步调用完成之前执行 在我继续将ModelView绑定到视图的DataContext之前,是否有一种方法可以“等待”异步完成,类似于wait // ModelView code ServerSideModel.ProAmService.EntityServiceClient serviceClient = new ServerSid

我有一个web服务,它将从存储在Azure中的数据库返回大约360个条目。在我的
ModelView
中,我执行了一个异步调用来检索数据,但是
ModelView
的绑定在异步调用完成之前执行

在我继续将
ModelView
绑定到视图的
DataContext
之前,是否有一种方法可以“等待”异步完成,类似于wait

// ModelView code

ServerSideModel.ProAmService.EntityServiceClient serviceClient = new ServerSideModel.ProAmService.EntityServiceClient();
serviceClient.GetPlayersPreviewCompleted += serviceClient_GetPlayersPreviewCompleted;
serviceClient.GetPlayersPreviewAsync(3);
Get在ModelView的构造函数中调用

// View code

this.DataContext = _viewModel;
在视图的构造函数中调用


如前所述,调用了行
this.DataContext=\u viewModel
get,异步函数在不返回任何数据的情况下启动。

当然,我觉得您可能不知道ObservableCollection,这是一个内置XAML感知事件的通用列表。在向此类列表添加或删除时,XAML UI会自动反映更改。很漂亮。像这样使用它:

// pretend your service returns this
class MyItem { public string Name { get; set; } }

// this is a property in your view model, bind your gridview to it
public ObservableCollection<MyItem> Items { get; set; }

// call this to load, it will continue to populate the UI until it is done
async System.Threading.Tasks.Task LoadAsync()
{
    var _Results = await GetItemsAsync();
    foreach (var item in _Results.OrderBy(x => x.Name))
        this.Items.Add(item);
}
//假装您的服务返回此
类MyItem{公共字符串名称{get;set;}}
//这是视图模型中的一个属性,请将gridview绑定到它
公共ObservableCollection项{get;set;}
//调用此加载,它将继续填充UI,直到完成为止
async System.Threading.Tasks.Task LoadAsync()
{
var_Results=wait GetItemsAsync();
foreach(在_Results.OrderBy(x=>x.Name)中的var项)
此.Items.Add(item);
}
XAML开发的经验法则是,任何类型的列表都应该升级为ObservableCollection,以便它能够轻松、正确地绑定

在此处阅读有关可观察到的集合的信息: 请在此处阅读有关XAML绑定的更多信息:


老实说,我不知道。对这类东西非常陌生,更喜欢JavaScript。谢谢你给我指这个方向,我会看看的。太好了,很高兴我能帮忙;别忘了标记你问题的答案。祝你好运