拖动多个项目时,此视图不允许使用DataGrid"EditItem"

ami*_*ros 7 wpf datagrid invalidoperationexception

我有一个datagrid,它获取如下数据:

    public struct MyData
    {
        public string name { set; get; }
        public string artist { set; get; }
        public string location { set; get; }
    }

    DataGridTextColumn col1 = new DataGridTextColumn();
    col4.Binding = new Binding("name");
    dataGrid1.Columns.Add(col1);
    dataGrid1.Items.Add((new MyData() { name = "Song1", artist = "MyName", location =     "loc"}));
    dataGrid1.Items.Add((new MyData() { name = "Song2", artist = "MyName", location =     "loc2"}));
Run Code Online (Sandbox Code Playgroud)

问题是 - 每当用户尝试编辑单元格或拖动多个单元格时,应用程序都会抛出异常:

System.InvalidOperationException未处理
消息:此视图不允许使用'EditItem'.

为什么是这样?是因为输入数据的方式?
有任何想法吗?
谢谢!

Ant*_*nes 11

而不是struct使用一个class代替.

更新的答案:尝试将您的MyData实例添加到List然后将该列表分配给DataGrid.ItemsSource

  • @amitarios:尝试将`MyData`实例添加到`List <MyData>`然后将该列表分配给`DataGrid.ItemsSource` (8认同)
  • 将其放入列表编辑列表但不是源对象。我错过了什么吗? (2认同)

FUR*_*10N 10

将ItemsSource分配给IEnumerable <T>时出现此问题.

我通过将IEnumberable <T>转换为List <T>然后将其分配给ItemsSource来修复它.

我不确定为什么使用IEnumerable导致了这个问题,但是这个改变为我修复了它.

  • 因为`List <T>`支持`Add()`和`Remove()` (3认同)