gpt4 book ai didi

wpf - ListCollectionView 的 live shaping bug

转载 作者:行者123 更新时间:2023-12-02 01:32:10 25 4
gpt4 key购买 nike

深入挖掘后,为什么 live shaping,详细按名称自动排序组,不起作用,我决定写一个小的测试应用程序,解决方案下载在这里:

here

下面是问题的描述:我使用一个 ObservableCollection of Person 对象,具有 Age 和 Name 属性(与 NPC)。我创建了一个 ListCollectionView 绑定(bind)到具有自定义 GroupStyle 的 DataGrid 以公开扩展器

对于这个 View 我设置:

  • 年龄组描述
  • SortDescription to Age(对组进行排序)
  • 将描述排序为名称

启动 DispatcherTimer 后,将每个人的所有年龄重新计算为 30 到 45 之间的随机值。

运行时故障:对于大约 60-70% 的组动态度假村,排序顺序是正确的,例如例如 31 之前 34 之前 41 之前 45。但有时第 30 个数字在两个第 40 个数字之间,这是错误的。问题出在哪里,我该如何解决?顺便说一下,这个问题只发生在团购时。

顺便说一句:LiveSortingProperties 集合的目的是什么,设置 SortDescription 和 IsLiveSorting=True 显然会激活实时整形,在哪种情况下我应该向该集合添加一个字符串?

这是错误组排序的屏幕截图:

Example Picture of wrong sorting :

enter image description here

最佳答案

组按发现顺序显示。在您的情况下,数据按年龄排序(然后按姓名排序),因此数据的初始扫描将在年龄 34 组之前发现年龄 31 组。但是,如果没有人的 Age=37,则不存在 Age-37 组。稍后,如果添加一个年龄=37 的新人(或更改现有人的年龄,当启用实时分组时),则会创建一个新的年龄 37 组。但由于它是在初始组之后发现的,因此它会添加到所有这些组之后。

目前 (4.6.1) 无法为组本身声明排序顺序。我们正在考虑添加此功能,因为很多人都要求它。

顺便说一句:LiveSortingProperties 的目的是针对以下情况:您希望按属性 A、B 和 C 进行排序,但您知道只有属性 C 会发生变化。在 SortDescriptions 中声明所有三个属性,但在 LiveSortingProperties 中仅声明 C。这样我们就不会浪费精力为永远不会被调用的 A 和 B 设置更改监听器。

关于wpf - ListCollectionView 的 live shaping bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33498350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com