WPF 菜单打开右对齐

WPF menus open right alinged

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

目前,当您打开菜单时,其子菜单会在左侧对齐打开。 有没有办法可以将对齐方式向右移动。 我已经阅读了一些可以将系统属性从左手更改为右手等的内容,但我只希望这种情况纯粹针对此特定菜单。

示例:

由此

对此

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

<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;
}