gpt4 book ai didi

c# - CollectionViewSource 不会对属性更改进行重新排序

转载 作者:可可西里 更新时间:2023-11-01 08:22:00 27 4
gpt4 key购买 nike

我正在将 ItemsControl 绑定(bind)到 CollectionViewSource。这是代码:

this.Trucks = new ObservableCollection<Truck>();
foreach (var truck in DataRepository.Trucks.Where(t => t.ReadyDate.Date.Equals(this.Date)))
{
this.Trucks.Add(truck);
}

this.TrucksSource = new CollectionViewSource { Source = this.Trucks };
this.TrucksSource.SortDescriptions.Add(new SortDescription("ReadyAddress.Region.RegionNumber", ListSortDirection.Ascending));
this.TrucksSource.SortDescriptions.Add(new SortDescription("TruckId", ListSortDirection.Ascending));

当我最初绑定(bind)时 - 排序有效。当我将项目添加到 ObservableCollection 时 - 它被插入到正确的位置,这很好。但是当我更改我排序的属性时 - 此项目不会在列表中“移动”。

ReadyAddress.Region.RegionNumber 正确引发 INotifyPropertyChanged,我在绑定(bind)字段中看到它,但顺序没有改变。我是否预料到了不应该发生的事情,或者有更好的方法来处理这个问题?

最佳答案

迟到的答案,但在 4.5 中添加了 ListCollectionView(ListBox 和 CollectionViewSource.View 的默认实现)新属性以实现这一点。

您可以使用 IsListSorting 和 ListSortingProperties 启用自动排序。不,它不会重建 View

list.SortDescriptions.Add(new SortDescription("MyProperty", ListSortDirection.Ascending));
list.IsLiveSorting = true;
list.LiveSortingProperties.Add("MyProperty");

这应该在属性 MyProperty 更改时求助。

关于c# - CollectionViewSource 不会对属性更改进行重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271048/

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