我正在尝试在界面上创建一个按钮,当您单击用户选择时,该按钮会为您提供下拉列表。上下文菜单似乎是理想的,除了我需要在左键单击显示它,而不是正确。我输入了以下简单的代码,这些代码似乎完美无缺:
Private Sub btn_PredefinedSearch_Click(sender As Object, e As RoutedEventArgs)
Dim btn As Button = sender
btn.ContextMenu.IsOpen = True
End Sub
这只是在单击按钮时打开上下文菜单,一开始效果很好。但是现在我绑定到路由命令并遇到问题。我已经完成所有设置,当我右键单击按钮时,我得到了一切按预期工作的上下文菜单,但是当我左键单击时,我得到了上下文菜单,但是一切都被禁用了(可用性方法只允许一直执行)所以这不是问题。)
为什么它会在右键单击但不会离开?有没有办法迫使它正常工作?或者我应该使用其他系统吗?
答案 0 :(得分:0)
我没有试过一个简单的演示来测试这个,但我记得我之前遇到过这个问题。右键单击以显示ContextMenu时,将为ContextMenu自动分配/更新PlacementTarget
。但是,当左键单击时,您必须自己设置IsOpen
以弹出ContextMenu,PlacementTarget
不会自动设置为您单击的UIElement。所以要解决这个问题,只需自己设置PlacementTarget
:
Private Sub btn_PredefinedSearch_Click(sender As Object, e As RoutedEventArgs)
Dim btn As Button = sender
btn.ContextMenu.PlacementTarget = btn;
btn.ContextMenu.IsOpen = True
End Sub