У меня есть окно WPF, которое управляет наборами конфигураций и позволяет пользователям редактировать набор конфигурации (кнопка редактирования) и удалять набор конфигурации (кнопка удаления).У окна есть элемент управления ListBox, который перечисляет наборы конфигурации по имени, а его ItemsSource имеет набор привязок к списку наборов конфигурации.
Я пытаюсь удалить элемент в коде файла для окна..
private void RemoveButton_Click(object sender, RoutedEventArgs e)
{
var removedItems = configSetListBox.SelectedItems;
foreach(ConfigSet removedItem in removedItems)
{
configSetListBox.Items.Remove(removedItem);
}
}
Мой код выдает недопустимое исключение операции, в котором говорится "Получайте доступ к элементам и изменяйте их с помощью ItemsControl.ItemsSource."Какое свойство я должен получить доступ для правильного удаления элементов из ListBox?Или есть более элегантный способ справиться с этим в WPF?Моя реализация немного WinForm-ish, если вы будете:)
Решение
private void RemoveButton_Click(object sender, RoutedEventArgs e)
{
foreach(ConfigSet removedItem in configSetListBox.SelectedItems)
{
(configSetListBox.ItemsSource as List<ConfigSet>).Remove(removedItem);
}
configSetListBox.Items.Refresh();
}
В моем случае у меня был List как тип привязки ItemSource, поэтомубросить это таким образом.Без обновления коллекции элементов ListBox не обновляется;так что это было необходимо для моего решения.