对组合框中的项目进行排序

时间:2014-05-28 09:50:58

标签: c# wpf sorting combobox

我有一个与可观察集合绑定的组合框。我使用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}}"/>

问题是我在集合中有两个我不想排序的项目。他们是

- 选择 - 和&#34;添加新&#34;。我希望这两个项目应始终显示在顶部,然后其余项目应按字母顺序排序。此外,当我向列表中添加新项目时,它应该自动排序。

1 个答案:

答案 0 :(得分:3)

您可以将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}"/>