【发布时间】:2011-02-12 01:23:28
【问题描述】:
我有一个绑定到 WPF DataGrid 的 ObservableCollection。 ObservableCollection 是异步填充和更新的。
DataGrid 未显示正确的行数。每次运行应用程序时,我都会显示不同数量的行,通常是 7-8,但有时只有一个。我对 ListBox 有相同的行为,但对 ComboBox 却没有。
我在 ListBox 和 ItemsControl 中得到了同样的行为,但在 ComboBox 中没有。 ComboBox 按预期正确显示所有 18 个项目。
编辑
这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection。
我需要在这里做更多的侦探工作,因为我的假设是更新发生在同一个线程中。所以前几个项目正确显示的原因是 ViewModel 能够在 View 本身加载之前检索一些数据。
【问题讨论】:
-
可能问题出在异步填充和更新 ObservableCollection 的函数中。
-
只是为了测试:尝试将集合绑定到一个简单的ListBox,看看问题是否仍然存在。
-
不要更改对集合的引用;清除它并添加项目
-
ListBox 的行为相同
-
这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection。
标签: c# wpf multithreading datagrid binding