2010-03-19 5 views
1

J'ai une classe qui contient des données de certains modèles. Cette classe a des métadonnées avec la valeur réelle.WPF Datagrid liaison à DataTable avec le type complexe

class ServerValue { 

    public int SomeId {get;} 
    public int SomeOtherId {get;} 
    public DateTime LastChanged {get;} 

    public object Value {get;set;} 

    // this lets me show the value, but how do i update it from the grid? 
    public override string ToString(){ 
     return Value.ToString(); 
    } 
} 

Maintenant, j'ai aussi une MyDataTable de classe qui dérive de DataTable qui a toutes sortes de logique. Il appelle le serveur, obtient un tas de ServerValues ​​et les met dans les lignes et les colonnes.

Enfin, j'ai un DataGrid WPF que je lie à MyDataTable et les données sont affichées, car le DataGrid appelle ToString sur chaque ServerValue et récupère la valeur pour l'affichage. Hourra jusqu'à présent.

Maintenant, je veux avoir une liaison de données bidirectionnelle, ainsi l'entrée sur la grille est réécrite à la ServerValue. Je veux donc lier les cellules de la grille à la propriété Value de ServerValue au lieu de la ServerValue elle-même.

Maintenant, la valeur ServerValue de la cellule DataGrid est simplement remplacée par une chaîne. Je pourrais travailler autour de ceci et tout mais je voudrais essayer l'itinéraire élégant d'abord. J'ai donc une datatable avec un type complexe dans les cellules et je veux une liaison de données bidirectionnelle avec une propriété spécifique de ce type.

Est-ce possible? J'ai été googler sur ceci et je ne peux rien sur ceci.

Merci à l'avance,

John

Répondre

1

Ce que vous voulez est un moyen de convertir avant et en arrière de votre objet à leur reprenstations texte.

Define a Converter pour votre liaison

http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

+0

Wow qui était rapide! On dirait prometteur, en regardant maintenant. Merci! – gjvdkamp

+0

Salut, j'ai le convertisseur et tout, mais il n'est pas utilisé par la grille, il affiche toujours le type de classe inséré. Voici comment je brancher le convertisseur: Connaissez-vous la syntaxe correcte? J'ai vu des exemples de convertisseurs mais ils sont tous avec datatemplates etc. Merci d'avance, John – gjvdkamp

+0

Ce dont j'ai besoin maintenant est l'exemple XAML avec votre Datagrid –

Questions connexes