
DevExpress WPF拥有120个控件和库将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。您可以使用以下技术当中的一种来优化GridControl中的数据更新加速个别更新批量处理更新DevExpress新旧版本帮助文档下载 可进QQ qun获取169725316加速个别更新ChunkListChunkListT 适合处理大型集合更新的应用程序如果您执行多个迭代数据源项的操作例如汇总计算、数据排序和过滤操作ChunkList 的工作速度可能比普通集合慢。我们建议您在以下情况下使用 ChunkList数据源至少包含 10,000 个元素。一个更新操作会影响集合中的一批元素。优化摘要GridControl 重新计算所有记录以更新数据摘要要优化更新操作请将GridControl.OptimizeSummaryCalculation属性设置为 true。在这种情况下GridControl仅计算更改记录的值并根据这些值更新数据摘要因此性能不依赖于记录数。我们建议您在以下情况下优化汇总计算GridControl 绑定到ObservableCollectionT 其项目实现INotifyPropertyChanged 和INotifyPropertyChanging接口。带有摘要的列不是未绑定的列。您不使用自定义摘要。您不锁定 GridControl 来批量处理更新。批量处理更新数据整型操作允许您对数据进行排序、过滤和分组以及计算摘要发生数据源更改时GridControl会执行这些操作。要将多个更新作为单个操作处理请使用以下方法锁定更新当您在 GridControl 中锁定更新时用户无法在 UI 中执行任何数据操作。 您可以处理数据更新然后将所有更改应用到 GridControl。我们建议您在以下情况下锁定 GridControl 更新您的数据源包含少于 100,000 个元素。 如果数据源太大可能会出现可见的 UI 滞后。一个批次会累积多个更新。请按照以下步骤应用此技术调用BeginDataUpdate方法来锁定 GridControl 中的数据更新。处理多个更新。调用EndDataUpdate方法来应用更改。下面的代码示例演示了如何防止 GridControl 在发生多个数据更改时频繁更新。C#public void PerformUpdates() { gridControl.BeginDataUpdate(); // Perform massive data updates... gridControl.EndDataUpdate(); }如果使用 TreeListViewGridControl 会根据数据结构类型处理分层更新Self-ReferentialGridControl 忽略来自数据源的通知并在EndDataUpdate调用后重新创建节点。HierarchicalGridControl 处理来自数据源的通知并在BeginDataUpdate和EndDataUpdate方法调用之间的每次更改后更新节点层次结构。无论数据结构类型如何调用TreeListView.BeginDataUpdate(bool recreateNodesOnEndDataUpdateOnly)和 TreeListView.EndDataUpdate方法来管理分层更新。 例如如果数据源中的每次更改都会显着影响节点层次结构则您可能希望在 EndDataUpdate 调用之后只更新一次。 为此请将 true 作为参数传递给TreeListView.BeginDataUpdate(bool recreateNodesOnEndDataUpdateOnly) 方法。手动刷新将AllowLiveDataShaping属性设置为 false 来允许 GridControl 在数据更改时忽略数据整型操作调用RefreshData 方法来显示控件中的所有更改。我们建议您在以下情况下手动强制更新 GridControl您将数据存储在ListT 集合中。您的数据源包含少于 100,000 个元素。 如果您的源太大可能会出现可见的 UI 滞后。您可以按需刷新 GridControl但不是在每次更改数据源之后刷新。定时器自动刷新如果您的数据频繁更改例如每毫秒则 GridControl 没有足够的时间来更新其布局您可以对计时器执行更新操作。实现一个自定义集合阻止来自数据源的更改通知并在指定的时间间隔内复制数据此集合中的更改会触发 GridControl 更新。我们建议您在以下情况下更新计时器上的数据您的数据源包含少于 100,000 个元素。 如果您的源太大并且出现明显的 UI 滞后您可以增加间隔。您定期刷新 GridControl但不是在数据源中的每次更改之后。