【问题标题】:silverlight delete row with delete keysilverlight 使用删除键删除行
【发布时间】:2011-06-16 08:06:03
【问题描述】:

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

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

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

但是当我点击删除时,我发现集合已更改并且枚举可能不起作用异常

【问题讨论】:

    标签: silverlight datagrid


    【解决方案1】:

    您不能从正在迭代的列表(或在本例中为相关列表)中删除项目。

    创建您要删除的项目的临时列表并对其进行迭代。

    例如

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

    【讨论】:

    • 或者,如果您有 using System.Linq,请将 .ToList() 添加到原始代码中 SelectedItems 的末尾。
    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2021-11-11
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多