DRD94 Ответов: 0

Все элементы удаляются из listbox. itemssource


У меня есть список, который привязан к ObservableCollection. Когда я нажимаю на элемент в списке, я хочу удалить его из списка и сделать видимым другой элемент пользовательского интерфейса, основанный на том, какой элемент ListBoxItem был выбран.

В настоящее время метод удаляет все filterItems из списка, независимо от того, что _selectedItem.ID равен. Что странно, так это то, что если я добавлю MessageBox после окончания Ifs, он будет работать правильно.

Что я уже пробовал:

Вот мой код до сих пор;

private void OnAddToFilterLBSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var _selectedItem = secondListBox.SelectedItem as FilterItem;
    if (_selectedItem != null)
    {
        if (_selectedItem.ID == 1)
        {
            currentItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 2)
        {
            subbieItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 3)
        {
            suppliersItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 4)
        {
            plantHireItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 5)
        {
            architectsItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 6)
        {
            qsItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 7)
        {
            projectManagerItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 8)
        {
            structEngItem.Visibility = Visibility.Visible;
        }
        else if (_selectedItem.ID == 9)
        {
            servEngItem.Visibility = Visibility.Visible;
        }
        filterItems.Remove(_selectedItem);
    }
}

[no name]

Узнайте, как использовать отладчик. Мы не можем пройти через код для вас.

DRD94

Если я установлю точку останова на линии filterItems.Remove (_selectedItem); и продолжайте, код работает именно так, как я ожидал. Если у меня нет точки останова, то все элементы удаляются и добавляются в первый список. Я никогда раньше не сталкивался с ситуацией, когда точка останова в отладчике, кажется, заставляет код работать правильно? То же самое относится и к добавлению потока.Спите (1000) тоже.

Maciej Los

Похоже, что listbox привязан к ObservableCollection. Когда вы удаляете какой-либо элемент из списка, observablecollection изменяется. Вы должны вызвать listbox, чтобы обновить его.
Проверить это: Как создать и привязать к ObservableCollection[^]

0 Ответов