2010-10-21 4 views
1

J'ai un contrôle de flux de données silverlight lié à un Dictionary<string, string> avec des colonnes autogenerate définies sur true.Silverlight 3: Datagrid - L'édition d'une cellule montre une "méthode de jeu de propriétés non trouvée". message

Dans l'événement AutoGeneratingColumn, je modifie la colonne Header et IsReadOnly Propriétés au besoin (la colonne liée à la valeur du dictionnaire est modifiable).

if (string.Compare(e.Column.Header.ToString().ToLower(), "key") == 0) 
      { 
       e.Column.Header = "Property Name"; 
       e.Column.IsReadOnly = true; 
      } 
      else 
      { 
       e.Column.Header = "Property Value"; 
       e.Column.IsReadOnly = false; 
      } 

Tout cela fonctionne comme prévu, mais quand je modifier une cellule et l'onglet out je reçois un message "Property set method not found." à côté de la cellule et il ne me permet pas de modifier la grille après.

Répondre

1

Un Dictionary<TKey, TValue> contient un ensemble de KeyValuePair<TKey, TValue>structures. Maintenant c'est le problème, les propriétés Key et Value sont en lecture seule, il n'y a pas de Set, même s'il y avait ce qui est édité ne sera pas le même élément qui est détenu dans le dictionnaire depuis structures sont des types de valeur.

La ligne inférieure est que vous ne pouvez pas modifier un Dictionary avec le DataGrid. Vous devrez créer votre propre classe: -

public class PropertyItem 
{ 
    public string Name { get; set; } 
    public object Value { get; set; } 
} 

Ensuite, utilisez quelque chose comme ObservableCollection<PropertyItem>.

+0

thnx anthony qui a résolu le problème. –

Questions connexes