5

我以编程方式添加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”。

如何使该错误不弹出?

4

3 回答 3

12

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

所以为了解决这个问题。在后面的 VM/代码中创建ObservableCollection属性并将 DataGrid ItemsSource 设置为它,就像

ObservableCollection<Type> MyCollection{get;set;}


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

在您的构造函数中,您可以通过更新它来初始化这个集合。并且每当您想在您DataGrid的 .

于 2013-10-12T13:31:40.697 回答
2

我在 3 个案例中看到了这个错误

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

简单地说,在 Datagrid 中设置 IsReadOnly="True"

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

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

case3 : 在 RowEditEnding 事件之后显示此错误,然后必须查看数据网格重新加载数据的位置,如果视图源或数据网格已在使用中并且我们尝试手动覆盖数据,则可能会发生这种情况

如果您发现任何新病例,请告诉我

于 2019-09-18T14:03:05.263 回答
1

这对我有用

InitializeComponent();
datagrid.BeginningEdit += (s, ss) => ss.Cancel = true;

我尝试了 IsReadOnly="True",但它不允许我检查和取消选中数据网格上的复选框

于 2021-11-12T15:21:09.783 回答