silverlight删除行删除键

时间:2011-06-16 08:06:03

标签: silverlight datagrid

我想在按下删除按钮时删除所有选定的行。 我假设作为日志,因为数据网格绑定到ObservableCollection,命中删除的效果是从集合中删除项目。

这似乎不起作用,这是我尝试过的:

private void historyGrid_KeyUp(object sender, KeyEventArgs e)        
{
  if (e.Key == Key.Delete)
  {
    foreach (Order item in historyGrid.SelectedItems)
    {
      history.Remove(item);
    } 
  }
}

但是当我点击删除时,我知道该集合已被更改,枚举可能无法正常运行

1 个答案:

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