Listbox не сортируется в приложении WPF - PullRequest
0 голосов
/ 16 января 2019

enter image description here Я пытаюсь пересортировать свой список при добавлении / удалении из него путем сохранения в списке, а затем сортировки. Когда я запускаю свое приложение, новые элементы, добавленные в список, всегда добавляются внизу, а не сортируются.

FileCabinetsRetreived - мой первый список, а FileCabinetsToAdd - мой второй список.

    private void addBttn_Click(object sender, RoutedEventArgs e)
    {
        List<string> allItems = new List<string>();
        List<string> addedItems = new List<string>();
        List<string> remainingItems = new List<string>();

        //adding all items in FileCabinetsretreived into allItems list
        foreach (var item in FileCabinetsRetrieved.Items)
        {
            allItems.Add(item.ToString());
        }

        //sorting all items list
        allItems = allItems.OrderBy(x => x).ToList();

        //adding Selected items to addedItems list
        foreach (var item in FileCabinetsRetrieved.SelectedItems)
        {
            addedItems.Add(item.ToString());
        }

        //sorting addedItems list
        addedItems = addedItems.OrderBy(x => x).ToList();

        // creating list of remaining items = allitems - addedItems
        remainingItems = allItems.Except(addedItems).ToList();

        //sorting remainingItems list
        remainingItems = remainingItems.OrderBy(x => x).ToList();

        //adding list of selected items to the FileCabinetsToAdd list
        foreach (var item in addedItems)
        {
                FileCabinetsToAdd.Items.Add(item);
        }

        //clearing FileCabinetsRetreived list
        FileCabinetsRetrieved.Items.Clear();

        //adding remainingItems list to FileCabinetsRetreived list
        foreach (var item in remainingItems)
        {
            FileCabinetsRetrieved.Items.Add(item.ToString());
        }

    }

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Это будет мое событие нажатия Add_button, хотя я не запускал его, поэтому могут быть некоторые ошибки, но это хорошее начало.

List<string> toSort = new List<string>();    

foreach (var item in FileCabinetsRetrieved.SelectedItems)
        {
            FileCabinetsRetrieved.Items.Remove(item);
            toSort.Add(item);
        }
foreach (var item in FileCabinetsToAdd.Items)
        {
            toSort.Add(item);
        }

toSort = toSort.OrderBy(x => x).ToList();
FileCabinetsToAdd.Items.Clear();
foreach (var item in toSort)
{
    FileCabinetsToAdd.Items.Add(item);
}

Важной частью является очистка списка и добавление всех отсортированных элементов снова.

0 голосов
/ 17 января 2019

Хорошо, вы должны отсортировать элементы списка FileCabinetsToAdd. Для этого вы можете использовать свойство сортировки списка:

FileCabinetsToAdd.Sorted = true;

Эта строка должна делать всю работу.

Если вам нужна пользовательская сортировка, то вам следует:

  1. резервное копирование элементов в списке
  2. очистить всю коллекцию FileCabinetsToAdd.Items
  3. добавить новые элементы в этот список
  4. сортировка списка
  5. добавить каждый элемент в списке в FileCabinetsToAdd.Items
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...