c# - 如何在异步任务列表中创建 DataGrid ItemSource
问题描述
我需要获取一个列表作为 wpf 中 DataGrid 的 ItemSource。我可以从我的异步方法中得到结果,如下所示:
public async Task<List<ManualReadTag>> GetManuallyReadTags(ParameterManualTags model { ..... }
我尝试在我的 MainWindow.xaml 中的 DataGrid 中显示它的值,如下所示:
public partial class MainWindow : Window
{
readonly ApplicationController _ac = new ApplicationController();
private Task<List<ManualReadTag>> _manualReadTagList = null;
public MainWindow()
{
InitializeComponent();
}
private void BtnGEtManualCount_OnClick(object sender, RoutedEventArgs e)
{
GetManuallyReadTags();
}
private void GetManuallyReadTags()
{
var model = new ParameterManualTags
{
Lane = Convert.ToInt32(TxtLane.Text),
Plaza = Convert.ToInt32(TxtLane),
DateTo = DateTo.DisplayDate,
DateFrom = DateFrom.DisplayDate
};
_manualReadTagList = _ac.GetManuallyReadTags(model);
ViewingGrid.ItemsSource = _manualReadTagList;
}
}
但是在 ViewingGrid.ItemsSource = _manualReadTagList; 它给了我一个错误:
严重性代码描述项目文件行抑制状态错误 CS0266 无法将类型“System.Threading.Tasks.Task>”隐式转换为“System.Collections.IEnumerable”。存在显式转换(您是否缺少演员表?) TagReporting D:\Projects\Lane\Antenna_Reading\TagReporting\TagReporting\MainWindow.xaml.cs 38 Active
如何将异步 Task 方法的结果用作数据网格的 ItemSource?谢谢你。
解决方案
首先,如果GetManuallyReadTags
是一个async方法,它的名字不是很好,它应该有一个 async 后缀GetManuallyReadTagsAsync
以使其明显。
其次,它是异步调用的await
理想选择。
private async Task GetManuallyReadTagsAsync()
{
var model = new ParameterManualTags
{
Lane = Convert.ToInt32(TxtLane.Text),
Plaza = Convert.ToInt32(TxtLane),
DateTo = DateTo.DisplayDate,
DateFrom = DateFrom.DisplayDate
};
_manualReadTagList = await _ac.GetManuallyReadTags(model);
ViewingGrid.ItemsSource = _manualReadTagList;
}
您还可以将类型更改_manualReadTagList
为
private List<ManualReadTag> _manualReadTagList;
最后调用GetManuallyReadTagsAsync()
异步事件处理程序:
private async void BtnGEtManualCount_OnClick(object sender, RoutedEventArgs e)
{
await GetManuallyReadTagsAsync();
}
推荐阅读
- c# - PMML 中的缺失/空数据字段值
- angular - this.router.navigate 功能无法按预期工作
- python-3.x - 如何在 python 中使用 mechanize 或 request 在 textarea 中输入数据
- reactjs - React Router 5 with Meteor:如何忽略 /public 中的文件
- r - 在 plotly r shiny 应用程序中动态添加跟踪
- c - C memcpy 到结构分配
- react-native - React Native Formik - 将对象传递给HandleChange时出错
- c# - 如何使 HttpWebRequest 函数异步?
- android - 如何创建具有透明部分的 DialogFragment?
- azure - 从 azure blob 存储中读取 tfrecords 文件