Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提高列表框填充性能_C#_Wpf_Listbox - Fatal编程技术网

C# 提高列表框填充性能

C# 提高列表框填充性能,c#,wpf,listbox,C#,Wpf,Listbox,我的WPF列表框已启用虚拟化并绑定到ObservableCollection。如果我在将所有项目添加到集合之前删除ItemsSource,然后再将其重新绑定,则添加项目的性能会得到提高,但在1000多个项目上它仍然会挂起3秒钟 this.listbox.ItemsSource = null; //add a bunch of files to ObservableCollection this.listbox.ItemsSource = CollectionViewSource.GetDefau

我的WPF列表框已启用虚拟化并绑定到ObservableCollection。如果我在将所有项目添加到集合之前删除ItemsSource,然后再将其重新绑定,则添加项目的性能会得到提高,但在1000多个项目上它仍然会挂起3秒钟

this.listbox.ItemsSource = null;
//add a bunch of files to ObservableCollection
this.listbox.ItemsSource = CollectionViewSource.GetDefaultView(MyCollectionView);
另外,如果我将CollectionViewSource用作ItemsSource而不是直接使用collection,那么性能似乎也会略有提高

ItemTemplate不是很复杂-DockPanel中有5个文本块绑定到ViewModel,IsAsync=False(因为滚动条上缓慢显示的数据在这里看起来很糟糕)


还有其他想法吗

嗨,米洛,挂起在你的应用程序中只发生一次,或者你经常添加1000多个项目??听起来更像是数据问题,而不是列表框问题。您确定延迟是在将项目添加到列表框时发生的,而不是在从中检索项目时发生的吗。。。你从哪里弄来的?也许值得您花时间来放一个秒表,找出最大的延迟发生在哪里。我将绑定到一个公共属性,并将1000多个项目添加到BackgroundWorker中。@dotsamuelswan您在每次迭代中用一秒钟更新DependencyProperty,这是部分正确的。剩下的两秒钟继续根据DataTemplate创建ListBoxItems。有没有办法加快速度?什么更快、需要最少测量:Grid/DockPanel/StackPanel?如果看不到更多代码,很难说什么是最佳路径。您可以更高效地将数据映射到绑定到的集合中。