【问题标题】:Sorting the items in a combobox对组合框中的项目进行排序
【发布时间】:2015-09-16 16:56:33
【问题描述】:

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

问题是我不想对集合中的两个项目进行排序。他们是

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

【问题讨论】:

标签: c# wpf sorting combobox


【解决方案1】:

您可以在 ViewModel 中将 ComboBox 绑定到 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}"/>

【讨论】:

  • 正确。这正是我输入一半的内容.. :|赞。!!你知道有什么方法可以让我通过 XAML 绑定并且仍然让“添加新”和“选择”在顶部吗?
  • 看看qqbenq的评论,也可以很好解决。
  • 按照您的解决方案,当我将新员工添加到列表中时,它会添加到底部。我希望添加到列表中的新项目也应该自动排序。
  • 确实如此,如果您使用此解决方案,您必须在添加新员工时清除并重新排列您的列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 2011-04-09
相关资源
最近更新 更多