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/

10-16 09:03