WPF菜单右对齐打开

WPF菜单右对齐打开,wpf,menu-items,Wpf,Menu Items,我有一个顶部菜单栏,有几个下拉菜单 当前,当您打开菜单时,其子菜单将在左侧对齐打开。 有没有办法把路线右移。 我读过一些东西,我可以将系统属性从左手改为右手等,但我只想让这个案例完全适用于这个特定的菜单 例如: 由此 对此 这里有一种方法可以实现你想要的。假设有如下菜单: <Menu> <MenuItem Header="AAA" SubmenuOpened="MenuItem_SubmenuOpened"> <MenuItem Heade

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

当前,当您打开菜单时,其子菜单将在左侧对齐打开。 有没有办法把路线右移。 我读过一些东西,我可以将系统属性从左手改为右手等,但我只想让这个案例完全适用于这个特定的菜单

例如:

由此

对此


这里有一种方法可以实现你想要的。假设有如下菜单:

<Menu>
    <MenuItem Header="AAA" SubmenuOpened="MenuItem_SubmenuOpened">
        <MenuItem Header="111"/>
    </MenuItem>
</Menu>
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;
}

@我很乐意帮忙。我刚刚发现有一个错误会导致不必要的测量。我会更正我的答案。我发现删除:if(!child.child.IsMeasureValid){child.child.Measure(新大小(Double.PositiveInfinity,Double.PositiveInfinity));}代码,会延迟菜单的正确定位。直到我把鼠标移到菜单上,它才开始更新——我确实觉得有点奇怪。