如何按字母顺序对 ObservableCollection 进行排序?

Aga*_*nMe 1 c# sorting

我需要ObservableCollection按字母顺序对after populatior 进行排序,假设里面有这个模型:

class Nation
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的ObservableCollection

ObservableCollection<Nation> ob = new ObservableCollection<Nation>();
Run Code Online (Sandbox Code Playgroud)

假设在我里面我有这个订单的三个项目:

  1. 英国
  2. 阿富汗
  3. 意大利

我需要按字母顺序排序,所以我尝试:

ob.OrderBy(c => c.Name);
Run Code Online (Sandbox Code Playgroud)

但我没有效果,应该是:

  1. 阿富汗
  2. 英国
  3. 意大利

我做错了什么?

Eld*_*dho 5

将您绑定ObservableCollection到 a CollectionViewsource,在其上添加排序,然后将其CollectionViewSource用作ItemSource控件的 。

使用 CollectionViewSource 进行排序

<CollectionViewSource x:Key='src' Source="{Binding ob}">
        <CollectionViewSource.SortDescriptions>
            <componentModel:SortDescription PropertyName="Name" />
        </CollectionViewSource.SortDescriptions>
 </CollectionViewSource>
Run Code Online (Sandbox Code Playgroud)

示例用法

<ListView ItemsSource="{Binding Source={StaticResource src}}" >
Run Code Online (Sandbox Code Playgroud)