数据网格“EditItem”在拖动多个项时不允许在此视图中使用。

25 浏览
0 Comments

数据网格“EditItem”在拖动多个项时不允许在此视图中使用。

我有一个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" }));

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

System.InvalidOperationException was unhandled
  Message: 'EditItem' is not allowed for this view.

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

0
0 Comments

问题的原因是当使用DataGridCheckBoxColumn时,需要设置IsEditing属性为true。解决方法是添加到复选框列的样式中。详细解决方案可以查看上述链接。

0
0 Comments

问题的原因是在拖动多个项目时,该视图不允许对DataGrid进行'EditItem'操作。解决方法是将结构体(struct)改为类(class)。尝试将MyData实例添加到List中,然后将该列表分配给DataGrid.ItemsSource。但是,即使将结构体更改为类,仍然会出现异常。将MyData实例放入列表中可以编辑列表,但不会编辑源对象。是否遗漏了什么?

0
0 Comments

在使用DataGrid控件时,当将ItemsSource属性赋值为IEnumerable时,我遇到了这个问题。为了解决它,我将IEnumerable转换为List,然后将其赋值给ItemsSource。我不确定为什么使用IEnumerable会引发这个问题,但是这个更改对我起到了修复作用。这是因为List支持Add()和Remove()方法。同意Jack Frost的观点。

0