2016-05-24 2 views
0

Привет Я новичок в разработке WPF и сталкиваюсь с проблемой Относительно привязки общей переменной к элементу TextBlock.WPF ContextMenu - no String с ItemTemplate

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

Action View является публичной Наблюдаемая коллекция действий предметов каждый имеет имя, которое является публично доступным в качестве имени. Поэтому обычно не должно быть проблем. Если я нажимаю правой кнопкой мыши на свой элемент, я получаю пустой ContextMenu с правильным количеством записей, но без текста.

picture of the empty ContextMenu

public class Action : INotifyPropertyChanged 
{ 
    public string Name;   

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

Было бы очень хорошо, если бы кто-то может помочь мне с этой проблемой.

+0

Насколько я знаю, связывании двигатель не будет работать на общественных полях. Попробуйте добавить геттеры и сеттеры. –

+0

Да, это была целая проблема с геттерами и сеттерами, все в порядке;) – Tooly

ответ

0

Вам необходимо реализовать свойство, а не поле для привязки для работы. Как это:

public string Name { get; set }; 
1

Раствор установки добытчиками сеттеры это все :)

public class ContextAction : INotifyPropertyChanged 
{ 
    public string _name; 

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


    public string Name 
    { 
     get { return _name; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

}