.net - 当在“for”循环中添加项目时,如何立即通知绑定到 ObservableCollection 的 DataGrid?
问题描述
假设我有这个数据网格:
<DataGrid x:Name="MyGrid" AutoGenerateColumns="True" ItemsSource="{Binding MyObservableList}"></DataGrid>
假设我有这个循环:
for (int i = 0; i < 10; i++)
{
MyObservableList.Add(i.ToString());
Console.WriteLine(i.ToString());
Thread.Sleep(500);
}
插入项目后是否可以立即更改 wpf 列表?像“Console.Write”代码?我尝试了很多东西,比如实现“CollectionChanged”或“INotifyPropertyChanged”,但它们只在循环结束时更新 DataGrid 。注意:目标是在循环过程中从 ObservableCollection 更新 DataGrid。任何类型的可观察列表的示例都可以。
解决方案
不要在 UI 线程上休眠,因为它会阻止它更新 UI。使用任务异步等待:
for (int i = 0; i < 10; i++)
{
MyObservableList.Add(i.ToString());
Console.WriteLine(i.ToString());
await Task.Delay(500);
}
推荐阅读
- python - TypeError:Sub 的不支持的操作数类型:第 8 行的“str”和“int”
- linux - qemu-arm-static 中的默认 qemu arm 环境是什么?
- java - 将请求标头转发到 Spring + Netflix + Feign 中的多个服务调用
- amazon-web-services - 亚马逊极光阅读器
- javascript - 获取 JSON 对象键作为链接
- android - 如何在 logcat 中打印 requestBody
- git - git rebase 后我无法删除的文件
- sql - TSQL:在动态 SQL 中使用“输出”子句
- python - 当我激活覆盆子 gpio 时向客户端发送 json 响应
- reactjs - react redux mapStateToProps - 正确的道具没有进入组件