У меня есть 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}}"/>
Проблема в том, что у меня есть два элемента в коллекции, которые я не хочу сортировать. Они есть
--Выберите-- и "Добавить новый". Я хочу, чтобы эти два элемента всегда отображались сверху, а затем остальные элементы должны сортироваться в алфавитном порядке. Кроме того, когда я добавляю новый элемент в список, он должен сортироваться автоматически.
Вы можете привязать свой ComboBox
к ObservableCollection
в вашей ViewModel и отсортировать его в коде:
С#:
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}"/>