0

Comment puis-je étendre un contrôle existant (ComboBox dans mon cas) pour inclure une nouvelle propriété que je peux lier à une propriété sur mon modèle de vue?Liaison d'une nouvelle propriété sur le contrôle personnalisé pour afficher le modèle

J'ai une propriété Dépendance sur la classe du contrôle comme suit:

public class MyComboBox : ComboBox 
{ 
    public static readonly DependencyProperty MyTextProperty = 
     DependencyProperty.Register("MyText", typeof(string), typeof(MyComboBox)); 

    public string MyText 
    { 
     get 
     { 
      return GetValue(MyComboBox.MyTextProperty).ToString(); 
     } 

     set 
     { 
      SetValue(MyComboBox.MyTextProperty, value);    
     } 
    } 

et que vous voulez lier à elle déclarative de XAML comme ceci:

<MyComboBox MyText="{Binding MyTextOnViewModel, 
    UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> 

La liaison ne va pas fonctionner, des idées pourquoi ??

Merci.

Répondre

2

Votre getter et setter référence TestTextProperty lorsque la propriété est déclarée comme MyTextProperty.

Votre getter doit également être coulée au lieu d'appeler .ToString()

return (string)GetValue(MyTextProperty); 

Voir cette page pour obtenir des instructions plus complètes.

+0

vos premiers points une faute de frappe, désolé, malade vérifier le reste maintenant – andrej351

+0

ok tout bon. merci pour l'aide man, mais j'ai eu mon contrôle personnalisé dans une cellule tamplate dans une grille de données, que j'ai oublié de mentionner. Vous venez de modifier la liaison à {Binding DataContext.MyTextOnViewModel, RelativeSource = {RelativeSource FindAncestor, AncestorType = {x: Type Pages: MyPage}}} – andrej351

Questions connexes