2016-05-24 1 views
0

Bonjour, je suis nouveau dans WPF Development et je rencontre un problème concernant la liaison de la variable publique à un élément TextBlock.WPF ContextMenu - no Chaîne avec ItemTemplate

<ListBox.ContextMenu> 
    <ContextMenu ItemsSource="{Binding ActionsView}"> 
     <ContextMenu.ItemTemplate> 
      <DataTemplate>         
      <TextBlock Text="{Binding Name}" /> 
      </DataTemplate> 
     </ContextMenu.ItemTemplate>  
    </ContextMenu> 

vue Action est une collection publique Observable des mesures de suivi détiennent chacun un nom qui est accessible au public comme nom. Donc, normalement, il ne devrait pas y avoir de problème. Si je fais un clic droit sur mon objet, j'obtiens un ContextMenu vide avec le bon nombre d'entrées mais sans aucun texte.

picture of the empty ContextMenu

public class Action : INotifyPropertyChanged 
{ 
    public string Name;   

    public ContextAction(string name) 
    { 
     Name = name;    
    } 
    public event PropertyChangedEventHandler PropertyChanged; 
} 

Ce serait vraiment bien si quelqu'un pouvait me aider avec ce problème.

+0

Pour autant que je sache, le moteur de liaison travail wont sur les champs publics. Essayez d'ajouter des getters et des setters. –

+0

Ouais c'était tout le problème avec les getters et les setters tout va bien;) – Tooly

Répondre

0

Vous devez implémenter la propriété, pas un champ pour que les liaisons fonctionnent. Comme ceci:

public string Name { get; set }; 
1

La solution se couchait les getters un setters qui est tout :)

public class ContextAction : INotifyPropertyChanged 
{ 
    public string _name; 

    public ContextAction(string name) 
    { 
     _name = name;    
    } 


    public string Name 
    { 
     get { return _name; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

}