我正在尝试在基于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)后才真正存在?
最终,我希望上下文菜单的内容基于右键单击的树视图项目,可能包括子菜单和/或禁用的项目。不过,起初,我会满足于我能得到的任何东西。
答案 0 :(得分:1)
将ItemsSource
的{{1}}属性绑定到ContextMenu
属性:
ContextMenuItems