2

关于排序的一个相关问题可能与回答这个问题有关。我已经意识到 VirtualTreeView 提供了它自己的排序方法,但它似乎比仅对数据本身进行排序并让 GUI 刷新更慢。

操纵 GUI 元素而不是它们显示的数据是否曾经是“良好做法”,为什么?

4

2 回答 2

7

通常,您希望在基础数据和该数据的可视化表示之间保持分离。考虑到这一点,人们通常更愿意在 GUI 级别实现排序,而不是在数据级别更低。

例如,这允许您显示相同数据的多个视图,但排序不同。这就是您从保持模型和视图之间的清晰分离中获得的那种好处。

在您的情况下,您对这两个选项的实现已经显示出性能差异。我从中得到的是,在 GUI 级别实现时可以优化排序。这就是我处理问题的方式。

于 2012-10-02T08:54:37.630 回答
2

我不会对数据进行排序,只是一个索引。您说您在列表中收集数据,然后将这些列表分组到一个组列表中。我不会对数据进行排序,而是将数据保持原样并生成一个包含数据引用的简单列表(或列表)并对其进行排序。使用该列表填充虚拟列表视图。

那将是大卫提到的那种中间层。通过保留多个索引,您可以根据不同的标准进行排序,而无需对基础数据进行排序。

于 2012-10-02T13:28:02.647 回答