对组合框中的项进行排序
本文关键字:排序 组合 | 更新日期: 2023-09-27 18:05:26
我有一个绑定到一个可观察集合的组合框。我使用CollectionViewSource按字母顺序对组合框中的项目进行排序。
<CollectionViewSource x:Key="EmployeeViewSource" Source="{Binding LstEmployeeDetails}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="EmployeeName" Direction="Ascending"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
然后像这样将它绑定到组合框上
<ComboBox x:Name="CmbboxEmployeeName" ItemsSource="{Binding Source={StaticResource EmployeeViewSource}}"/>
问题是我在集合中有两项我不想排序。他们是
——选择——和"添加新"。我希望这两个项目应该总是显示在顶部,然后其余的项目应该按字母顺序排序。此外,当我向列表中添加新项时,它应该自动排序。
您可以将您的ComboBox
绑定到ViewModel中的ObservableCollection
并在代码中对其进行排序:
:
public class ViewModel
{
public ObservableCollection<Employee> List { get; set; }
public ViewModel()
{
List = new ObservableCollection<Employee>();
List.Add("Select");
List.Add("Add New");
foreach (var employee in LstEmployeeDetails.OrderBy(e => e.EmployeeName))
{
List.Add(employee);
}
}
}
XAML:
<ComboBox x:Name="CmbboxEmployeeName" ItemsSource="{Binding List}"/>