强制打开时,上下文菜单命令绑定失败

时间:2014-10-27 22:45:00

标签: .net wpf vb.net command

我正在尝试在界面上创建一个按钮,当您单击用户选择时,该按钮会为您提供下拉列表。上下文菜单似乎是理想的,除了我需要在左键单击显示它,而不是正确。我输入了以下简单的代码,这些代码似乎完美无缺:

Private Sub btn_PredefinedSearch_Click(sender As Object, e As RoutedEventArgs)
    Dim btn As Button = sender
    btn.ContextMenu.IsOpen = True
End Sub

这只是在单击按钮时打开上下文菜单,一开始效果很好。但是现在我绑定到路由命令并遇到问题。我已经完成所有设置,当我右键单击按钮时,我得到了一切按预期工作的上下文菜单,但是当我左键单击时,我得到了上下文菜单,但是一切都被禁用了(可用性方法只允许一直执行)所以这不是问题。)

为什么它会在右键单击但不会离开?有没有办法迫使它正常工作?或者我应该使用其他系统吗?

1 个答案:

答案 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