N.B这个问题已经更新,进一步阅读下

嗨,

我想要创造一个定制的上下文的菜单,有4个子的菜单,各自在自己的象限(左,右上,左,右).类似的3d工作室最大。

这是我们走近一问题迄今为止:-创建一个定义WPF控制,来自右键菜单和处理流程[1]
-宣布4依赖性的右键菜单和处理流程,这些将显示的菜单,并可以从停靠。
-AddOwner到右键菜单和处理流程的.IsOpenProperty,增加的一个属性变更通知。
-当打财产变化设置的打酒店的4子上下文的菜单。
-使用ContextMenuService设置的垂直和水平偏移的上下文的菜单,使他们出现在每个象限;结合实际的高度和宽度的性能计算出抵消。

[1]需要得从上下文的菜单,否则不能将它分配给右键菜单和处理流程的酒店的窗口。

出现 工作有问题的菜单 保持开放(它们被封闭,因为重点是菜单外的)但是我敢肯定使用Reflector.NET 找到一个方法解决这个问题。

这是我的第一个定义WPF控制,我已经尝试写;并不知道如果这是最好的办法。

任何建议/意见对如何创建这四的上下文的菜单吗?

有帮助吗?

解决方案 2

更新

"确定"。后玩弄定控制我的东西 工作 比以前更好。所有的菜单现在开放。

我做了什么:
-创建的定的控制命名为QuadContextMenu来自右键菜单和处理流程,复盖默认风格的关键。
-风格的控制有4个弹出原语:
-每PART_的名字所以我获得一提到他们当OnApplyTemplate.
-每个人都有儿童QuadMenu,这是定制的控制产生的MenuBase.
-每个人都有自己的VerticleOffset和HorizontalOffset性结合到ActualHeight和ActualWidth的孩子[2].

QuadMenu式/控制模板:
-有一个经典的边界的一个dockpanel和边境有一个文本块把菜单的名字。

[2]的位置如何菜单到四:-左上是偏负实际的宽度和高度
-TopRight偏负实际的高度
-BottomLeft偏负实际的高度
-先是 偏移和在原来的位置

alt text

新的问题/问题

这些都是下一个挑战,要使这种控制:
1.在目前的键盘和鼠标是锁定的/所捕获的第一个菜单,你焦点上和其他人不提供通盘旋在他们。这意味着你只能使用1的菜单。
2.触的菜单项使用的左上/BottomLeft的子打开左侧。

我已经试图更换菜单项通过重GetContainerForItemOverride方法返回QuadMenuItem.QuadMenuItem是一个自定义的控制从菜单项.当我这么做但是我失去的子菜单的功能,这是令人沮丧。

如果任何人有任何尖/技巧/建议,关于如何解决这些问题,它会非常感谢!D谢谢

其他提示

我能想到的两种方法,没有一个是一定是干净的,但有,如果你有时间去工作的可能性。

方法1

使用上下文菜单,而是通过设置模板让这个通过ContextMenu真的只是表明,发生在打开其他窗口控制。也许技巧可以做到,这样打开这些二级菜单不走的焦点了。这可能最终导致仍然原来的问题。

方法2

如果您设置ContextMenu.StaysOpen为false,然后尝试在菜单关闭自己来控制,会发生什么?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top