【问题标题】:WPF ContextMenu - no String with ItemTemplateWPF ContextMenu - 没有带有 ItemTemplate 的字符串
【发布时间】:2016-05-24 13:50:01
【问题描述】:

您好,我是 WPF 开发新手,遇到了关于将公共变量绑定到 TextBlock 元素的问题。

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

Action View 是一个公开的可观察的 Action Items 集合,每个 Action Items 都有一个名称,该名称可作为 Name 公开访问。所以通常应该没有问题。如果我右键单击我的项目,我会得到一个空的 ContextMenu,其中包含正确的条目数但没有任何文本。

picture of the empty ContextMenu

public class Action : INotifyPropertyChanged
{
    public string Name;        

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

如果有人能帮我解决这个问题,那就太好了。

【问题讨论】:

  • 据我所知,绑定引擎不会在公共领域工作。尝试添加 getter 和 setter。
  • 是的,这就是 getter 和 setter 的全部问题,一切都很好;)

标签: c# wpf contextmenu datatemplate itemtemplate


【解决方案1】:

解决方案是将 getter 设置为 setter 就是这样 :)

 public class ContextAction : INotifyPropertyChanged
{
    public string _name;   

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


    public string Name
    {
        get { return _name; }
    }

    public event PropertyChangedEventHandler PropertyChanged;

}

【讨论】:

    【解决方案2】:

    您需要实现属性,而不是绑定工作的字段。像这样:

    public string Name { get; set };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2011-11-01
      相关资源
      最近更新 更多