带Caliburn.Micro的WPF动态上下文菜单

时间:2018-11-20 15:37:56

标签: wpf data-binding caliburn.micro

我正在尝试在基于Caliburn.Micro的应用程序中创建动态上下文菜单。任何人都可以分享一个有效的方法示例吗? 到目前为止,对于每个上下文菜单项,我都有一个非常小的模型:

this is sample <a href='somelink.php'>text</a> about something what is <a href='somelink.php'>text</a>. 

this is sample <a href='somelink.php'>text</a> about something what is <a href='somelink.php'>text</a>.

我的视图模型中的一个属性,显示这些菜单项模型的列表:

public class ContextMenuUiModel
{
    public string Name { get; set; }
}

,还有一个以collection属性命名的菜单项(基于通过this question and answer找到的FreePIE中的菜单创建)

      BindableCollection<ContextMenuUiModel> m_ContextMenuItems = new BindableCollection<ContextMenuUiModel>
  {
     new ContextMenuUiModel { Name="Item 1"},
     new ContextMenuUiModel { Name="Item 2"},
     new ContextMenuUiModel { Name="Item 3"}
  };
  public BindableCollection<ContextMenuUiModel> ContextMenuItems
  {
     get {return m_ContextMenuItems;}
  }

Caliburn.Micro日志记录报告“ get_ContextMenuItems没有可操作的元素”。同样,尽管Caliburn注意没有找到属性的其他命名元素(例如,“未应用绑定约定:Element ConfigItemTree与属性不匹配。”),但它并未对ContextMenuItems做出类似声明。因此,看来Caliburn只是没有将ContextMenu视为可以或应该处理的元素。

也许问题在于Caliburn看不到上下文菜单,因为它只有在右键单击(类似于this issue with collapsed elements)后才真正存在?

最终,我希望上下文菜单的内容基于右键单击的树视图项目,可能包括子菜单和/或禁用的项目。不过,起初,我会满足于我能得到的任何东西。

1 个答案:

答案 0 :(得分:1)

ItemsSource的{​​{1}}属性绑定到ContextMenu属性:

ContextMenuItems