WPF菜单打开正确

时间:2018-06-29 00:49:27

标签: wpf menu-items

我有一个顶部菜单栏,其中有几个下拉菜单。

当前,当您打开菜单时,其子菜单将在左侧对齐打开。 有没有办法可以将对齐方式向右移。 我已经读了几本书,可以从左到右更改系统属性,但我只希望这种情况仅适用于此特定菜单。

示例:

从此

enter image description here

对此

enter image description here

1 个答案:

答案 0 :(得分:1)

这里是实现您想要的方式。假设有一个像这样的菜单:

<Menu>
    <MenuItem Header="AAA" SubmenuOpened="MenuItem_SubmenuOpened">
        <MenuItem Header="111"/>
    </MenuItem>
</Menu>

然后,在代码隐藏中,我们可以像下面这样调整子菜单的Popup

private void MenuItem_SubmenuOpened(object sender, RoutedEventArgs e)
{
    MenuItem owner = (MenuItem)sender;
    Popup child = (Popup)owner.Template.FindName("PART_Popup", owner);

    child.Placement = PlacementMode.Left;
    child.HorizontalOffset = owner.ActualWidth;
    child.VerticalOffset = owner.ActualHeight;
}