【问题标题】:WPF keeping a TreeView list sortedWPF 保持 TreeView 列表排序
【发布时间】:2023-03-05 01:38:02
【问题描述】:

我在 TreeView 上有一个节点,我手动填充并希望保持排序。通过用户交互,TreeViewItem 上的标题可能会发生变化,它们应该移动到列表中的适当位置。

我遍历创建大量 TreeViewItem 的 foreach 并将它们添加到父节点。需要对所有孩子进行分类。然后我添加一个 SortDescription 如下。

tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));

这会对初始列表进行排序,但如果我在其中一个树视图项目显示后更改标题,则该项目不会再次排序。标题文本发生变化,但列表中的项目位置保持不变。

我有什么遗漏吗?

我已尝试清除列表并重新填充它,这会起作用,但是它会在我的程序中引起一些问题,因为我有很多逻辑来确定何时更改所选项目以及列表中的树视图项目之一当我清除列表时,它会调用所有这些逻辑,然后当我在重建列表后以编程方式重新选择项目时,它会调用所有这些逻辑。

【问题讨论】:

    标签: wpf treeview


    【解决方案1】:

    项目集合必须在其属性发生任何更改时刷新

    在标题编辑后尝试以下代码 ....

      tviParent.Items.Refresh();
    

    如果上面的代码不起作用,那么在每次编辑后尝试下面的代码......

      tviParent.Items.SortDescriptions.Clear()
      tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));  
    

    【讨论】:

    • 您提供的第二个选项适用于我的包含复选框的 TreeView。谢谢!
    【解决方案2】:

    如果你设置了

    yourCollectionView.IsLiveSorting = true;
    

    然后它会自动更新。

    还要让它工作,将它放入一个转换器中,如下所示:https://stackoverflow.com/a/5730402/364429

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2010-12-15
      • 2018-03-19
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多