WPF:显示大量自定义控件

时间:2011-10-05 12:17:11

标签: c# wpf wpfdatagrid

我即将开发一个将用作规划工具的wpf应用程序。主要思想是显示一个表,行是人,列是天。每个单元格被拆分为两个较小的单元格,每个较小的单元格对应于分配给当天(该列)的员工(行)的任务。

应该是这样的:

/////////////第1天//第2天//第3天//第4天//第5天//第6天//第7天

People1 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2

People2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2

People3 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2

我需要能够将customcontrol用作一个较小的单元格(一个“任务”)。

我尝试操作ItemsControl,DataGrid,但每次显示性能问题时:滚动(水平和垂直)都是滞后的,或者应用程序用于绘制组件的时间太重要了。

由于我似乎需要新的想法来解决性能问题,我想知道是否有其他人有同样的问题,并设法处理它..

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

众所周知,

ItemsControl存在性能问题。您可以尝试切换为ListBoxListView,因为它们基于VirtualizingStackPanel

此外,问题WPF - Virtualizing an ItemsControl?提供了有关虚拟化ItemsControl的更多信息。

此外,announced at the recent Build conference .NET 4.5将对ItemsControl进行相当大的性能改进。 Ira Lukhezo在一篇名为ItemsControl Performance Improvements in .NET 4.5的博客文章中总结了这一点。

答案 1 :(得分:0)

如果您使用的是DataGrid,请确定,然后检查ListView是否会提供更好的结果。

OR

我希望您将DataGrid与DataGridTemplateColumns一起使用,如果是,则显示CellEditingTemplate中的Functional Graphical E1 / E2和Drawing中E1 / E2的快照Celltemplate。它们看起来都是一样的,但基于绘图的一个将在渲染时绘图为Freezable时表现更好。