Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF datagrid "EditItem is not allowed for this view" exception

I programmatically add 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);

When I add Item:

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

But if I doubleclick on Items I have error:

"EditItem" is not allowed for this view.

How to make that error does not pop up?

like image 255
prm Avatar asked Oct 12 '13 12:10

prm


1 Answers

You should not update the Items directly of your DataGrid but rather set the ItemsSource to the collection. DataGrid will generate the view out of the itemsource that implements IEditableCollectionView interface in order to allow the editing. This interface has function EditItems() which let the editing happen.

So in order solve this problem. Create the ObservableCollection property in your VM/Code behind and set the DataGrid ItemsSource to it like

ObservableCollection<Type> MyCollection{get;set;}


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

In your constructor you can initialize this collection by newing it. And whenever you want to add item in your DataGrid, just add the item in the Observable collection (MyCollection), it will be shown on grid and will be editable.

like image 150
Nitin Avatar answered Sep 27 '22 23:09

Nitin