我正在尝试在单独的线程中绑定gridview
。
几乎每个示例在描述长时间运行的任务时都使用await Task.Delay(10000);
,但我实际上想在这里做一些工作。
如何绑定网格异步(或一般的任何工作)?
private async void BindGrid_Click(object sender, EventArgs e)
{
string result = await BindFileGridTemp();
RadMessageBox.Show(result);
}
public async Task<string> BindFileGridTemp() // Bind Grid
{
// Bind Grid here.........
//this.radGridViewFiles.DataSource = null;
//this.radGridViewFiles.DataSource = MyGlobals.ListOfItemsToControl.ToList()
await Task.Delay(10000); // I dont want this but its on every example for async and await
return "I am finished";
}
答案 0 :(得分:2)
我正在尝试将gridview绑定在一个单独的线程中。
正如其他人所说,你实际上无法在另一个线程中进行绑定;它必须是UI线程。
几乎每个例子都使用等待Task.Delay(10000);当他们描述一个长期运行的任务时,我实际上想在这里做一些工作。
await Task.Delay
是Thread.Sleep
的异步等价物。它只是意味着“放置你必须做的异步工作”。
如何绑定网格异步(或一般的任何工作)?
可以这么简单:
public async Task<string> BindFileGridAsync()
{
this.radGridViewFiles.DataSource = await GetMyDatasourceAsync();
return "I am finished";
}
请注意,这与MVVM模式不符。要遵循MVVM模式,请实现Peter Ritchie的建议:将RadGridView.DataSource
XAML属性数据绑定到ViewModel属性,在创建ViewModel时启动异步操作,并使用结果值更新属性。如果您正在进行异步数据绑定,我有一个blog post that may help。