我有一个与可观察集合绑定的组合框。我使用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;。我希望这两个项目应始终显示在顶部,然后其余项目应按字母顺序排序。此外,当我向列表中添加新项目时,它应该自动排序。
答案 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}"/>