2016-05-24 16 views
0

Hallo, ich bin neu in WPF-Entwicklung und rannte in ein Problem hinsichtlich des Bindens einer öffentlichen Variable an ein TextBlock-Element.WPF ContextMenu - keine Zeichenfolge mit ItemTemplate

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

Action View ist eine öffentliche beobachtbare Sammlung von Action Items jeweils einen Namen hält, die als Namen öffentlich zugänglich ist. Normalerweise sollte es kein Problem geben. Wenn ich mit der rechten Maustaste auf meinen Artikel klicke, erhalte ich ein leeres ContextMenu mit der richtigen Anzahl von Einträgen, aber ohne Text.

picture of the empty ContextMenu

public class Action : INotifyPropertyChanged 
{ 
    public string Name;   

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

Es wäre wirklich schön, wenn mir jemand bei diesem Problem helfen könnte.

+0

Soweit ich weiß, das Bindungsmodul arbeitet nicht auf den öffentlichen Bereichen. Versuchen Sie, Getter und Setter hinzuzufügen. –

+0

Ja, das war das ganze Problem mit Gettern und Settern alles in Ordnung;) – Tooly

Antwort

0

Sie müssen die Eigenschaft implementieren, nicht ein Feld für Bindungen. Wie folgt aus:

public string Name { get; set }; 
1

Die Lösung wurde die Einstellung der Getter ein Setter, die es :)

public class ContextAction : INotifyPropertyChanged 
{ 
    public string _name; 

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


    public string Name 
    { 
     get { return _name; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

}