WPF列表框中的多项选择在项目删除后清除

本文关键字:项目 删除 清除 选择 列表 WPF | 更新日期: 2023-09-27 17:57:33

我在WPF中有一个带有DataBinded Xml集合的ListBox。我将SelectionMode设置为Extended,以便用户可以选择多个项目。我有一个RemoveItem命令,它遍历selectededitem并从列表中删除它们:

   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);
   }

问题是,在删除选择的第一个项目后,该选择将被清除,并选择列表的最后一个项目。

如何保留我开始选择的内容并确保删除所有项目?

WPF列表框中的多项选择在项目删除后清除

旧的"先复制"方法怎么样?:

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
}

在反向迭代中执行循环。

 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);
 }