Множественный выбор WPF Listbox очищается после удаления элемента

У меня есть ListBox в WPF с коллекцией DataBinded Xml. Я установил для SelectionMode значение Extended, чтобы пользователь мог выбрать несколько элементов. У меня есть команда RemoveItem, которая перебирает выбранные элементы и удаляет их из списка:

   var selecteditems = this.SelectedItems;
   for(int i = 0; i < selecteditems.Count; i++ )
   {
        ItemBox ouritem = (ItemBox)this.ItemContainerGenerator.ContainerFromItem(this.SelectedItems[i]);
         XmlDataProvider prov = this.DataContext as XmlDataProvider;
         XmlNode MainNode = prov.Document.SelectSingleNode("//MainNode");
         MainNode.RemoveChild(selecteditems[i] as XmlNode);

   }

Проблема заключается в том, что после удаления первого элемента выборки выбор очищается и выбирается последний элемент списка.

Как я могу сохранить выбор, с которого я начал, и убедиться, что все элементы удалены?


person Audio    schedule 08.04.2014    source источник


Ответы (2)


Как насчет старого подхода «сначала сделайте копию» ?:

IList selectedItems = new List<YourDataType>();
foreach (YourDataType item in this.SelectedItems) selectedItems.Add(item);
for (int index = selectedItems.Count - 1; index >= 0; index--)
{
    // remove each selected item here
}
person Sheridan    schedule 08.04.2014
comment
Спасибо! Простое и быстрое решение - person Audio; 08.04.2014

Выполните свой цикл в обратной итерации.

 var selecteditems = this.SelectedItems;
 for(int i = selecteditems.Count-1; i>=0; i-- )
 {
    ItemBox ouritem = (ItemBox)this.ItemContainerGenerator.ContainerFromItem(this.SelectedItems[i]);
     XmlDataProvider prov = this.DataContext as XmlDataProvider;
     XmlNode MainNode = prov.Document.SelectSingleNode("//MainNode");
     MainNode.RemoveChild(selecteditems[i] as XmlNode);

 }
person Palak.Maheria    schedule 08.04.2014