我正在尝试将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;
}
答案 0 :(得分:0)
如果您希望水平居中并将ContextMenu
放在Button
下,则必须将VerticalOffset
绑定到ContextMenu
的{{1}}并且使用ActualHeight
来计算所需的垂直偏移量。您可以将Converter
的高度设为Button
,以使其更通用。
ConverterParameter
你也可以(在我看来你应该)从XAML设置这个绑定。