Сортировка предметов в выпадающем списке

1

У меня есть 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}}"/>

Проблема в том, что у меня есть два элемента в коллекции, которые я не хочу сортировать. Они есть

--Выберите-- и "Добавить новый". Я хочу, чтобы эти два элемента всегда отображались сверху, а затем остальные элементы должны сортироваться в алфавитном порядке. Кроме того, когда я добавляю новый элемент в список, он должен сортироваться автоматически.

Теги:
sorting
wpf
combobox

1 ответ

3

Вы можете привязать свой 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}"/>
  • 0
    Верный. Это именно то, что я набрал на полпути ..: | Престижность. !! Знаете ли вы какой-нибудь способ, который позволит мне связывать через XAML и все же позволить «добавить новый» и «выбрать» наверху?
  • 0
    Может быть, посмотрите комментарий qqbenq, это тоже может быть хорошим решением.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню