如何按字母顺序对可观察集合进行排序
本文关键字:集合 排序 观察 何按字 顺序 | 更新日期: 2023-09-27 18:06:25
我需要按字母顺序对 populatior 之后的ObservableCollection
进行排序,假设我在里面有这个模型:
class Nation
{
public string Name { get; set; }
}
这是我的ObservableCollection
:
ObservableCollection<Nation> ob = new ObservableCollection<Nation>();
假设里面有三个项目具有此顺序:
- 英国
- 阿富汗
- 意大利
我需要按字母顺序排序,所以我尝试:
ob.OrderBy(c => c.Name);
但我没有得到任何效果,当它应该是:
- 阿富汗
- 英国
- 意大利
我做错了什么?
将
ObservableCollection
绑定到CollectionViewsource
,添加排序 在其上,然后将该CollectionViewSource
ItemSource
用作 控制。
使用集合视图源进行排序
<CollectionViewSource x:Key='src' Source="{Binding ob}">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
示例用法
<ListView ItemsSource="{Binding Source={StaticResource src}}" >
var ob = new ObservableCollection<Nation>
{
new Nation {Name = "Sweden"},
new Nation {Name = "Afghanistan"},
new Nation {Name = "England"},
new Nation {Name = "Albania"},
};
var sorted = ob.OrderBy(n => n.Name);
sorted
是IEnumerable
和排序的,如果你仍然需要它,ObservableCollection
只需按照此处所述将其传递给构造函数。