Меню WPF открытое правое выравнивание - PullRequest
0 голосов
/ 29 июня 2018

У меня есть верхняя строка меню с несколькими выпадающими меню.

В настоящее время, когда вы открываете меню, его дочернее меню открывается выровненным слева. Есть ли способ, которым я могу сдвинуть это выравнивание вправо. Я прочитал несколько вещей, где я мог изменить системные свойства слева направо и т. Д., Но я просто хочу, чтобы этот случай был исключительно для этого конкретного меню.

Пример:

Из этого

enter image description here

К этому

enter image description here

1 Ответ

0 голосов
/ 29 июня 2018

Вот способ достичь того, что вы хотите. Предположим, есть меню вроде:

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