Sorting ObservableCollection

本文关键字:ObservableCollection Sorting | 更新日期: 2023-09-27 17:53:28

假设我有雇员类别为

ObservableCollection
public ObservableCollection<Employee> employeeCollection = new ObservableCollection<Employee>();
public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public double MobileNumber { get; set; }
    public string City { get; set; }
    public int Age { get; set; }
    public Employee() {}
}

现在我正试图排序ObservableCollection (" employeeCollection ")通过用户从组合框[中适当的选择,它将是....按名字排序....按手机号码等排序[..]

,并且需要返回排序的可观察集合....意味着它不应该是" var "的形式,它应该是ObservableCollection<Employee>

所以我可以把它分配回“ItemsControl”“ItemsSource”属性…

谢谢…

Sorting ObservableCollection

您可以对集合的视图排序,而不是对集合本身排序:

// xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
<myView.Resources>
    <CollectionViewSource x:Key="ItemListViewSource" Source="{Binding Itemlist}">
        <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="SortingProperty" />
        </CollectionViewSource.SortDescriptions>
    </CollectionViewSource>
</myView.Resources>

然后你可以使用CollectionViewSource作为ItemSource:

ItemsSource="{Binding Source={StaticResource ItemListViewSource}}"

我认为PVitt可能有最好的解决方案…然而,我发现了这个sortedoservablecollection类,可能会有帮助?

http://softcollections.codeplex.com/

我实现了一个ObservableCollectionView,它支持排序和过滤使用lambda(像LINQ但live)和项目跟踪:

https://mytoolkit.codeplex.com/wikipage?title=ObservableCollectionView

您不需要自己排序,但可以让WPF为您排序。例如,参见SortDescription