WPF datagrid“此视图不允许使用EditItem”异常

时间:2013-10-12 12:44:33

标签: c# .net wpf datagrid

我以编程方式添加DataGrid

System.Windows.Controls.DataGrid dataGrid = new System.Windows.Controls.DataGrid();
dataGrid.GridLinesVisibility = DataGridGridLinesVisibility.None;
dataGrid.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
dataGrid.Background = Brushes.White;
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Width = 250;
textColumn.Header = "Account";
textColumn.Binding = new Binding("Account");
dataGrid.Columns.Add(textColumn);

当我添加项目时:

  

Globals_Liker.list_datagrid [tabControl1.SelectedIndex] .Items.Add(Globals_Liker.list_item [tabControl1.SelectedIndex] [I]);

但如果我双击项目我有错误:

  

此视图不允许使用“EditItem”。

如何使该错误不会弹出?

2 个答案:

答案 0 :(得分:8)

should not update the Items directly of your DataGrid,而是将ItemsSource设置为集合。 DataGrid将从实现IEditableCollectionView接口的itemsource生成视图,以便进行编辑。此界面具有功能EditItems(),可以进行编辑。

所以为了解决这个问题。在VM / Code后面创建ObservableCollection属性,并将DataGrid ItemsSource设置为

ObservableCollection<Type> MyCollection{get;set;}


Globals_Liker.list_datagrid[tabControl1.SelectedIndex].ItemsSource = MyCollection;

在构造函数中,您可以通过新建它来初始化此集合。每当你想在DataGrid中添加项目时,只需在Observable集合中添加项目(MyCollection),它就会显示在网格上并且可以编辑。

答案 1 :(得分:0)

我在3个案例中看到此错误

case1 :如果然后双击数据网格(包含诸如分析之类的已处理数据的自定义数据网格),则会显示此错误

简单地,在Datagrid中设置IsReadOnly =“ True”

case2 :编辑数据网格后显示此错误,必须在RowEditEnding期间设置

  (sender as DataGrid).CommitEdit(DataGridEditingUnit.Row);

case3 :此错误在RowEditEnding事件之后显示,然后必须查看datagrid在何处重新加载数据,如果viewsource或datagrid已经在使用中,并且我们尝试手动覆盖数据,则可能会发生这种情况< / p>

让我知道您是否发现过新病例