ContextMenu放置

时间:2013-09-29 23:40:21

标签: c# wpf contextmenu

我正在尝试将我的ContextMenu放在UserControl下面但没有成功:

  • 我创建了一个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;
        }

我遇到与此帖相同的问题:How can I tell a ContextMenu to place itself relatively to its control and not the cursor?

如何告诉我的ContextMenu将自己置于我的控件之下?

由于

1 个答案:

答案 0 :(得分:3)

试试这个,而不是按钮上的ContextMenuService.Placement,在上下文菜单上设置放置

         sousMenuManager.Placement = PlacementMode.Bottom;

并在mousedown处理程序中将上下文菜单的placementtarget设置为grid_manager

        sousMenuManager.PlacementTarget = grid_manager;
        sousMenuManager.IsOpen = true;