Как выровнять контекстное меню справа внизу? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть следующий код, который я использую, чтобы открыть контекстное меню Rectangle:

private void RectBtn_MouseDown(object sender, MouseButtonEventArgs e)
{
    var cm = ContextMenuService.GetContextMenu(sender as DependencyObject);
    if (cm == null)
        return;
    else
    {
        cm.Placement = PlacementMode.Top;
        cm.PlacementTarget = sender as UIElement;
        cm.IsOpen = true;
    }
}

Итак, мое контекстное меню, когда оно появилось, выглядит следующим образом:

Model 1

Есть ли способ добиться нижеследующего взгляда из кода позади (с сохранением вышеуказанного кода)?

Model 2

Я посмотрел на решение по этой ТАКОЙ записи , но мне нужно добиться этого из кода позади.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 30 мая 2018

Ваш код не соответствует размещенным вами изображениям.Вы устанавливаете размещение Bottom, но на скриншотах контекстное меню расположено вверху цели.

В любом случае, вы можете использовать размещение Custom и рассчитать положение вручную:

else
{
    cm.Placement = PlacementMode.Custom;
    cm.PlacementTarget = sender as UIElement;

    cm.CustomPopupPlacementCallback = 
        (popupSize, targetSize, offset) => 
            new[] 
            { 
                new CustomPopupPlacement 
                { 
                    Point = new Point(targetSize.Width - popupSize.Width, targetSize.Height) 
                } 
            };

    cm.IsOpen = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...