【问题标题】:Context menu command binding fails when forced open强制打开时上下文菜单命令绑定失败
【发布时间】:2014-12-23 06:06:39
【问题描述】:

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

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

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

为什么它可以在右键单击而不是左键?有什么方法可以强制它正常工作吗?还是我应该使用其他系统?

【问题讨论】:

    标签: .net wpf vb.net command


    【解决方案1】:

    我没有尝试使用简单的演示来测试它,但我记得我之前遇到过这个问题。当右键单击以显示 ContextMenu 时,PlacementTarget 会自动为 ContextMenu 分配/更新。但是左键单击时,您必须自己设置IsOpen 才能弹出上下文菜单,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
    

    【讨论】:

    • 你是我的新英雄。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多