0

我试图将我的 ContextMenu 放在我的 UserControl 之下,但没有成功:

  • 我创建了一个用户控件“Bouton_Accueil”
  • 在我的代码中,我创建了一个 ContextMenu
  • 我在 Bouton_Accueil 上添加了一个 MouseDown 事件
  • 在 MouseDown 我放了“contextMenu.IsOpen = true”

但是 contextMenu 总是出现在鼠标光标附近,而不是在我的控制之下。

这是我的代码:

主页 :

<pm:Bouton_Accueil  x:Name="grid_manager" ContextMenuService.Placement="Bottom"   Margin="0,0,0,0" Grid.Column="0">

        </pm:Bouton_Accueil>

在我的代码中:

ContextMenu sousMenuManager = new System.Windows.Controls.ContextMenu();
            sousMenuManager.Style = (Style)FindResource("StyleContext");
            sousMenuManager.Width = 133;
            this.grid_manager.ContextMenu = sousMenuManager;
            ContextMenuService.SetPlacement(this.grid_manager, System.Windows.Controls.Primitives.PlacementMode.Bottom);

public void MouseDown(object sender, RoutedEventArgs e)
        {
                sousMenuManager.IsOpen = true;
        }

我和这篇文章有同样的问题:如何告诉 ContextMenu 相对于它的控件而不是光标放置自己?

我怎样才能告诉我的 ContextMenu 将自己置于我的 Control 之下?

谢谢

4

1 回答 1

3

试试这个,而不是 ContextMenuService.Placement on button,在 contextmenu 本身上设置 Placement 就像

         sousMenuManager.Placement = PlacementMode.Bottom;

并在 mousedown 处理程序中将上下文菜单的放置目标设置为您的 grid_manager

        sousMenuManager.PlacementTarget = grid_manager;
        sousMenuManager.IsOpen = true;
于 2013-09-30T03:38:22.640 回答