如何使用集合在ContextMenu中创建根级菜单项?

时间:2014-02-25 15:50:41

标签: wpf contextmenu itemscontrol

我们有一组存储在ViewModel属性中的DesignerLocation对象。我们希望为每个项目创建上下文菜单,以便用户可以轻松访问它们。

目前,我们将该集合绑定到特定“打开...”上下文菜单的Items属性,这意味着即使只有一个设计器位置,用户也必须弹出该菜单。

e.g。这是我们的上下文菜单的过度简化版本,有三个设计师位置

Open in... (<-- This menu's Items property is bound to DesignerLocations)
    Open DesignerLocation1
    Open DesignerLocation2
    Open DesignerLocation3
[separator]
Cut
Copy
Paste

现在这里只有一个设计师位置的相同上下文菜单。这会为单个项目创建不必要的弹出窗口。

Open in...
    Open DesignerLocation1
[separator]
Cut
Copy
Paste

这是我们真正想要的......

Open DesignerLocation1
Open DesignerLocation2
Open DesignerLocation3
[separator]
Cut
Copy
Paste

......如果只有一个......

Open DesignerLocation1
[separator]
Cut
Copy
Paste

那就是说,如何实现类似下面的内容而不必求助于复合集合或手动响应ContextMenuOpening?

<MenuCollectionPlaceholder>  <-- This would be bound to DesignerLocations and would generate MenuItems as needed without requiring the flyout
[separator]
Cut
Copy
Paste

最后,我看到人们将ItemsControls直接放在上下文菜单中,但这对我来说似乎不对,因为ItemsControl本身不是MenuItem。这是错的吗?这将为我们提供我们所追求的目标。

<ItemsControl>  <-- This would be bound to DesignerLocations and would generate MenuItems as needed without requiring the flyout
[separator]
Cut
Copy
Paste

0 个答案:

没有答案