注意此问题已更新,请继续阅读
你好,
我想创建一个自定义上下文菜单,它有 4 个子菜单,每个子菜单都在自己的象限(左上、右上、左下、右下)。类似于 3ds Studio Max。
到目前为止,我是这样处理这个问题的: - 创建一个自定义 WPF 控件,派生自 ContextMenu[1]
- 声明 ContextMenu 的 4 个依赖属性,这些将是显示的菜单,并且可以从 XAML 中设置。
- AddOwner 到 ContextMenu.IsOpenProperty,添加属性更改通知。
- 当 IsOpen 属性更改时,设置 4 个子上下文菜单的 IsOpen 属性。
- 使用 ContextMenuService 设置上下文菜单的垂直和水平偏移量,使它们出现在每个象限中;绑定实际的高度和宽度属性来计算偏移量。
[1] 需要从上下文菜单派生,否则不能将其分配给 Window 上的 ContextMenu 属性。
这似乎可行,菜单不保持打开存在问题(由于焦点在菜单之外,它们正在关闭),但我确信使用 Reflector.NET 可以找到解决方法。
这是我尝试编写的第一个自定义 WPF 控件;并且不确定这是否是最好的方法。
关于如何创建这个四元上下文菜单的任何建议/想法?