集合中项目的可观察集合属性已更改
我有一个 ObservableCollection
。 我已将其绑定到 ListBox 控件,并将 SortDescriptions
添加到 ListBox 上的 Items 集合中,以使列表按照我想要的方式排序。
当子元素上的任何属性发生更改时,我想在任何点重新使用列表。
我的所有子元素都实现了 INotifyPropertyChanged。
I have an ObservableCollection<T>
. I've bound it to a ListBox control and I've added SortDescriptions
to the Items collection on the ListBox to make the list sort how I want.
I want to resort the list at ANY point when any property changed on a child element.
All my child elements implement INotifyPropertyChanged
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
强力:
编辑:
1、2 的代码将位于您的代码隐藏中。
对于#1,您将执行以下操作:
对于#2,在 CollectionChanged 处理程序中,您将执行以下操作:
EDIT2:
但是,在这种情况下,我强烈建议您还检查 ListCollectionView.NeedsRefresh,并且仅在设置时刷新。 如果您的属性已更改且不影响排序,则没有理由重新排序。
Brute force:
EDIT:
The code for 1, 2 would live in your code-behind.
For #1, you'd do something like:
For #2, in your CollectionChanged handler, you would do something like:
EDIT2:
However, in this case, I would strongly suggest that you also check ListCollectionView.NeedsRefresh and only refresh if that is set. There's no reason to re-sort if your properties have changed which don't affect the sort.
这有效。 每当集合发生变化时,它就会重新对集合进行排序。 可能可以以更有效的方式实现,但这就是它的要点。
XAML:
This works. Whenever the collection changes, it re-sorts the collection. Might be doable in a more efficient way but this is the gist of it.
XAML: