WPF ContextMenu
的默认行为是在用户右键单击时显示它。我希望ContextMenu
在用户左键单击时显示。看来这应该是ContextMenu
的简单属性,但事实并非如此。
我装配了它,以便在代码背后处理LeftMouseButtonDown
事件,然后显示上下文菜单。
我在项目中使用MVVM,这意味着我对具有上下文菜单的项目使用了DataTemplate
。摆脱掉背后的代码,找到一种使用XAML中的触发器或属性来显示上下文菜单的方法,这会更加优雅。
对这个问题有什么想法或解决方案吗?
最佳答案
我建议做的是制作一个附加了DependencyProperty的新静态类。调用类LeftClickContextMenu和属性Enabled(仅是想法)。当您注册DependencyProperty时,添加一个on更改的回调。然后在属性更改的回调中,如果Enabled设置为true,则向LeftMouseButtonDown事件添加一个处理程序,然后在其中进行处理。如果Enabled设置为false,则删除处理程序。这使您可以通过在xaml中使用以下内容将其设置为任何属性的属性。
<Border namespace:LeftClickContextMenu.Enabled="True" />
这项技术称为附加行为,您可以在以下代码项目文章中了解更多信息:http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx
关于.net - 仅使用XAML在左键单击上显示ContextMenu,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/555252/