我以编程方式添加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”。
如何使该错误不会弹出?
答案 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>
让我知道您是否发现过新病例