WPF保持TreeView列表排序

WPF*_*bie 7 wpf treeview

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

我遍历一个foreach创建了许多TreeViewItem并将它们添加到父节点.所有孩子都需要进行分类.然后我按如下方式添加SortDescription.

tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));
Run Code Online (Sandbox Code Playgroud)

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

有什么我想念的吗?

我已经尝试清除列表并重新填充它,这将起作用,但是它会在我的程序中产生一些因素,因为我在更改所选项目时有很多逻辑,并且因为我在列表中的一个树视图项目清除被选中它在我清除列表时调用所有这些逻辑,然后当我在重建列表后以编程方式重新选择项目时再次调用.

WPF*_*-it 12

物品收集必须在对其财产进行任何更改时进行更新

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

  tviParent.Items.Refresh();
Run Code Online (Sandbox Code Playgroud)

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

  tviParent.Items.SortDescriptions.Clear()
  tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending));  
Run Code Online (Sandbox Code Playgroud)