2010-03-26 18 views
1

J'utilise DataTemplateSelector avec le DataGrid WPFToolkit. Je veux sélectionner le modèle d'édition pour une cellule en fonction de la valeur d'une autre cellule sur la même ligne.WPF - Obtention de la valeur d'un DataGridCell à partir de DataTemplateSelector

La méthode SelectTemplate de DataTemplateSelector prend deux arguments: l'un est l'élément de données affiché par la ligne de la grille, l'autre est la cellule de la grille.

Ce que je veux savoir, c'est comment obtenir la valeur d'une autre cellule à l'intérieur de la méthode SelectTemplate. Cependant, je ne suis pas sûr de la bonne façon d'obtenir cette information en accédant aux propriétés de la cellule.

public class RangeValuesEditTemplateSelector : DataTemplateSelector 
{ 
    public DataTemplate NumberTemplate{get; set;} 
    public DataTemplate TextTemplate{get; set;} 

    public override DataTemplate SelectTemplate(object item, DependencyObject container) 
    { 
     //TODO: need to find the correct way to populate the if condition below 
     DataGridCell theCell = container as DataGridCell; 


     if (theCell.something.somethingElse) 
     { 
      return NumberTemplate; 
     }else{ 
      return TextTemplate; 
     } 

    } 


} 

Quelqu'un peut-il aider?

Merci beaucoup à l'avance.

AT

+0

Avez-vous déjà trouvé une solution? – Shimmy

Répondre

0

Je pense que vous avez besoin d'un ItemViewModel. Lorsque vous créez ces objets (un pour chaque ligne); Le itemViewModel devrait avoir des propriétés supplémentaires qui sont définies (selon votre calcul personnalisé) lors de la création ou via des setters. Donc, si EachRow a une propriété appelée "MoreImportantThanNextOne", vous pouvez le définir dans le cteur ItemVM, qui prend en compte certaines données pour la ligne suivante.
Ensuite, dans le remplacement TemplateSelector, vous pouvez simplement accéder aux valeurs de propriété "MoreImportantThanNextOne" de ItemVM pour sélectionner le bon modèle.