WPF的默认行为ContextMenu是在用户右键单击时显示它.我希望在ContextMenu用户左键单击时显示.看起来这应该是一个简单的属性ContextMenu,但事实并非如此.
我操纵它,以便我LeftMouseButtonDown在代码隐藏中处理事件,然后显示上下文菜单.
我在我的项目中使用MVVM,这意味着我将DataTemplates用于具有上下文菜单的项目.摆脱代码隐藏并找到一种使用XAML中的触发器或属性显示上下文菜单的方法会更加优雅.
这个问题的任何想法或解决方案?
我有一个矩形。它rectangle有一个自定义(只是在其中contextmenu进行了一些简单的更改)。我想要的是,单击鼠标左键,将弹出。ControlTemplae<ContextMenu.Template>contextmenu
我尝试添加rectangle1.contextmenu.isopen=true矩形的事件。是的,它MouseDown会打开。但是,它被设置为在矩形的上方(顶部)打开/弹出,我通过简单地添加到矩形的 XAML 来做到这一点。但是如果我在矩形的事件,然后弹出,但在错误的位置,它不再停留在顶部,而是跟随鼠标。例如,如果我单击矩形的右角,则在右侧打开/弹出。这行为很奇怪,我不知道为什么会发生这种情况。contextmenucontextmenuContextMenuService.Placement="top"rectangle1.contextmenu.isopen=trueMouseDowncontextmenucontextmenu
无论如何,如何contextmenu通过单击鼠标左键打开矩形顶部的 ?
更新
奇怪的是,无论我向其中任何一个添加什么代码mouseevent,上下文菜单都会丢失它的位置!例如,如果我什至添加MsgBox("abc")mouseDown 事件,然后右键单击矩形,上下文菜单就不在顶部!