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



我正试图在Caliburn中创建一个动态上下文菜单。基于微的应用程序。有人能分享一个有效方法的例子吗?到目前为止,我对每个上下文菜单项都有一个非常简单的模型:

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

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

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;}
}

以及,以集合属性命名的菜单项(基于FreePIE中的菜单创建,通过此问答找到(

<TreeView  x:Name="ConfigItemTree" VerticalAlignment="Top" ItemsSource="{Binding ConfigTreeRoot}" >
<TreeView.ContextMenu>
<ContextMenu >
<MenuItem x:Name="ContextMenuItems" DisplayMemberPath="Name" />
</ContextMenu>
</TreeView.ContextMenu>

Caliburn。Micro日志记录报告"get_ContextMenuItems没有可操作的元素"。此外,尽管Caliburn注意到其他未找到属性的命名元素(例如"Binding Convention Not Applied:Element ConfigItemTree与属性不匹配。"(,但它并没有对ContextMenuItems做出类似的声明。因此,Caliburn似乎只是没有将ContextMenu视为一个可以或应该处理的元素。

也许问题是Caliburn看不到上下文菜单,因为在右键单击之前它实际上并不存在(类似于折叠元素的问题(?

最终,我希望上下文菜单的内容基于右键单击的树状视图项目,可能包括子菜单和/或禁用项目。不过,首先,我会满足于我能买到的任何物品。

ContextMenuItemsSource属性绑定到ContextMenuItems属性:

<ContextMenu ItemsSource="{Binding PlacementTarget.DataContext.ContextMenuItems, RelativeSource={RelativeSource Self}}" 
DisplayMemberPath="Name" />

相关内容

  • 没有找到相关文章

最新更新