假设我有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”)
通过用户从组合框中进行适当选择[它将... ...排序FirstName ...。排序由MobileNumber等...] ..
需要取回已排序的可观察集合......
意味着不应该是“var”的形式
ObservableCollection<Employee>
因此,我可以将其分配回“ItemsSource”
的{{1}}属性...
感谢......
答案 0 :(得分:27)
您可以对集合的视图进行排序,而不是对集合本身进行排序:
// 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}}"
答案 1 :(得分:3)
我认为PVitt可能有最好的解决方案......但是,我确实找到了这个 SortedObservableCollection类可能有帮助吗?
答案 2 :(得分:2)
我实现了一个ObservableCollectionView
,它支持使用lambda(如LINQ但是直播)和项目跟踪进行排序和过滤:
https://mytoolkit.codeplex.com/wikipage?title=ObservableCollectionView
答案 3 :(得分:1)
你不需要自己排序,但可以让WPF为你做。例如,请参阅SortDescription。