我需要按照字母顺序对人口进行ObservableCollection
排序,假设我在这个模型中:
class Nation
{
public string Name { get; set; }
}
这是我的ObservableCollection
:
ObservableCollection<Nation> ob = new ObservableCollection<Nation>();
假设我内部有三个具有此顺序的项目:
我需要按字母顺序排序,所以我试着:
ob.OrderBy(c => c.Name);
但是我没有效果,应该是:
我做错了什么?
答案 0 :(得分:1)
将
ObservableCollection
绑定到CollectionViewsource
,添加排序 在其上,然后使用CollectionViewSource
作为a的ItemSource
控制。
使用CollectionViewSource进行排序
<CollectionViewSource x:Key='src' Source="{Binding ob}">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
样本用法
<ListView ItemsSource="{Binding Source={StaticResource src}}" >
答案 1 :(得分:0)
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
,只需将其传递给构造函数here。