WPF - 按钮下的Center ContextMenu

时间:2013-06-04 15:03:33

标签: wpf contextmenu

我正在尝试将ContextMenu置于按钮下。我正在尝试根据ContextMenu的高度设置VerticalOffset属性,以便菜单的顶部始终位于相同的位置,而不管项目的数量。我似乎无法获得菜单的高度(可能是因为它尚未绘制?)。我的代码如下,我怎样才能获得ContextMenu的高度?

private void Button_Click(object sender, RoutedEventArgs e)
{
    Button PopUpButton = (sender as Button);
    PopUpButton.ContextMenu.IsEnabled = true;
    PopUpButton.ContextMenu.PlacementTarget = PopUpButton;
    PopUpButton.ContextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Center;
    PopUpButton.ContextMenu.VerticalOffset = ((PopUpButton.ContextMenu.Height / 2) + 25);
    PopUpButton.ContextMenu.IsOpen = true;
}

1 个答案:

答案 0 :(得分:0)

如果您希望水平居中并将ContextMenu放在Button下,则必须将VerticalOffset绑定到ContextMenu的{​​{1}}并且使用ActualHeight来计算所需的垂直偏移量。您可以将Converter的高度设为Button,以使其更通用。

ConverterParameter

你也可以(在我看来你应该)从XAML设置这个绑定。