2009-03-13 10 views
0

Am nouveau pour XAML/WPF et ont rencontré ce problème étrange:DataBinding dans une liste Voir

J'ai une vue de la liste à laquelle je mets une source de données. Le DataSource est un arraylist de "CatalogPartRows". Je crée mes colonnes dans le code. Je définis ensuite leurs modèles de cellules (certaines de mes colonnes contiennent des listes déroulantes et des cases à cocher). Mon problème ici est que j'ai besoin d'appeler une fonction dans la classe "CatalogPartRow" qui récupère la chaîne que j'ai besoin de mettre dans une cellule.

est le code que j'essaie d'utiliser ici:

  // THIS DOES NOT WORK 
      // 
      ObjectDataProvider ODP = new ObjectDataProvider(); 
      ODP.MethodName = "PropertyValueAsString"; 
      ODP.MethodParameters.Add(PropertyName); 
      ODP.ObjectType = typeof(CatalogPartRow); 

      Binding DataBindingText = new Binding(); 
      DataBindingText.Source = ODP; 

      // THIS WORKS 
      // 
      //String BindingPathText = /*NOXLATE*/"PropertyValues[" + CPR.IndexOf(PropertyName) + /*NOXLATE*/"]"; 
      //Binding DataBindingText = new Binding(BindingPathText); 

      FrameworkElementFactory TextBlockElement = new FrameworkElementFactory(typeof(TextBlock)); 
      TextBlockElement.SetBinding(TextBlock.TextProperty, DataBindingText); 

      FrameworkElementFactory PropertyColumnElement = new FrameworkElementFactory(typeof(Grid)); 
      PropertyColumnElement.AppendChild(TextBlockElement); 

      DataTemplate DT = new DataTemplate(); 
      DT.VisualTree = PropertyColumnElement; 

      GVC.CellTemplate = DT; 

est mon approche correcte?

CPR = CatalogPartRow

GVC = GridViewColumn

Merci, Raj.

Répondre

0

Étant donné que l'enrobage de la méthode dans une propriété ne fonctionnera pas (étant donné qu'un paramètre est requis), le meilleur compagnon est probablement de créer un convertisseur de valeur. Vous pouvez utiliser PropertyName comme liaison pour la colonne, puis dans votre convertisseur, vous pouvez transmettre cela à votre méthode et renvoyer la valeur de la méthode.