7
votes

DataGrid 'Editem' 'n'est pas autorisé pour cette vue lorsque vous faites glisser plusieurs éléments

J'ai un datagrid qui obtient des données telles que ceci: xxx

Le problème est - chaque fois qu'un utilisateur tente d'éditer une cellule ou de glisser plusieurs cellules - l'application jette une exception:

Système.InvalidoperationException a été non géré

Message: 'Editem' n'est pas autorisé pour cette vue.

Pourquoi est-ce? Est-ce à cause de la manière dont les données sont entrées?
Des idées?
Merci!


0 commentaires

6 Réponses :


11
votes

au lieu d'utiliser un struct Utilisez une classe à la place.

Réponse mise à jour: Essayez d'ajouter vos instances MyData à une liste, puis affectant cette liste à DataGrid.itemsSource


3 commentaires

J'ai changé la «structure» en «classe», mais elle jette toujours l'exception.


@Amitarios: essayez d'ajouter votre MyData puis affectant cette liste au datagrid.itemsSource


Mettre en place une liste édité la liste mais pas l'objet source. Est-ce que je manque quelque chose?



1
votes

Si vous utilisez DataGrid DataGridCheckboxColumn, vous devez définir sur la colonne Cochez la case. Voir ceci: https://stackoverflow.com/a/122444451/1643201


0 commentaires

12
votes

J'ai eu ce problème lors de l'attribution d'objetsSource à Ienumerable .

Je l'ai corrigé en convertissant le ienumberable à une liste puis en attribuant cela à des itemsource.

Je ne sais pas pourquoi utiliser Ienumerable causait cette question, mais ce changement lui a réparé pour moi.


2 commentaires

Parce que list prend en charge ajouter () et supprimer ()


Convenu Jack Frost.



1
votes

Cette réponse n'est pas la mienne, juste l'exemple de code de travail suggéré par Anthonywjones. XXX


0 commentaires

0
votes

pour mon cas, xxx pré>

renvoie un p> xxx pré>

pas un p> xxx pré> Ainsi, lorsque j'affecte un style pour mon séchoir d'événement dans une colonne à cocher dans My DataGrid P>

datagridName.Columns.Add(new DataGridCheckBoxColumn()
                            {
                                Header = column.HeaderText.Trim(),
                                Binding = new System.Windows.Data.Binding(column.BindingDataName.Trim()) { StringFormat = column.StringFormat != null ? column.StringFormat.Trim().ToString() : "" },
                                IsReadOnly = column.IsReadOnlyColumn,
                                Width = new DataGridLength(column.DataGridWidth, DataGridLengthUnitType.Star),
                                CellStyle = style,
                            });


0 commentaires

0
votes

J'ai résolu ceci en définissant la source de DataGrid après l'initializececomponent: xxx


0 commentaires