我想在按下删除按钮时删除所有选定的行。
我假设作为日志,因为数据网格绑定到ObservableCollection
,命中删除的效果是从集合中删除项目。
这似乎不起作用,这是我尝试过的:
private void historyGrid_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
foreach (Order item in historyGrid.SelectedItems)
{
history.Remove(item);
}
}
}
但是当我点击删除时,我知道该集合已被更改,枚举可能无法正常运行
答案 0 :(得分:3)
您无法从正在迭代的列表中删除项目(或者在这种情况下是相关列表)。
创建要删除的项目的临时列表,然后迭代它。
e.g。
List<Order> itemsToDelete = new List<Order>(historyGrid.SelectedItem);
foreach (Order item in itemsToDelete)
{
history.Remove(item);
}
或正如AnthonyWJones正确建议的那样,只需添加对Linq的引用并将代码更改为
foreach (Order item in historyGrid.SelectedItems.ToList())
{
history.Remove(item);
}