对组合框中的项进行排序

本文关键字:排序 组合 | 更新日期: 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并在代码中对其进行排序:

c#

:

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}"/>