在 WPF 中编辑 TreeView 的子项时对其进行排序

发布于 2024-12-01 02:55:39 字数 749 浏览 0 评论 0 原文

我有一个 2 层 TreeView,其中充满了一个集合项目,每个项目都有另一个项目集合。

class A
{
    public List<B> collection;
}

List<A> treeViewCollection;

我使用 ListCollectionView 使用转换器对这些项目进行排序,如果是集合内的集合,请按照此处的建议进行操作:

如何使用 Xaml 中的 SortDescriptions 对 TreeView 项目进行排序?

我发现的问题是 ListCollectionView 不会对项目进行排序当它们被编辑时,我创建了自己的 ListCollectionView 类来附加到 items 属性通知。我不知道的是,当我检测到某个项目已更改为使用 ListCollectionView 时该怎么办。如果我在 ListCollectionView 上调用 Refresh(),我会丢失 TreeView 上的选择,我在某处看到过使用 Replace 操作引发 CollectionChangedNotification (这对我来说是个好主意),但它对 TreeView 没有影响。

关于如何更新 TreeView 排序而不丢失所有选择和扩展项目的想法吗?

谢谢。

I have a 2 levels TreeView that is filled with a collection items that each one has another collection of items.

class A
{
    public List<B> collection;
}

List<A> treeViewCollection;

I'm using a ListCollectionView to sort these items using a converter in the case of the collection inside the collection as recommended here:

How to sort TreeView items using SortDescriptions in Xaml?

The problem that I've found is that the ListCollectionView does not resort the items when they are edited so I've created my own ListCollectionView class to attach to the items property notification. What I don't know is what to do now when I detect that an item has changed to resort the ListCollectionView. If I call Refresh() on the ListCollectionView I lose the selection at the TreeView, I've seen somewhere about raising the CollectionChangedNotification with a Replace action (and that sounds as a good idea to me) but it has no effect on the TreeView.

Any idea on how to update the TreeView sorting without losing all the selections and expanded items?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文