Подтвердить что ты не робот

Как я могу сказать ContextMenu относительно себя относительно своего контроля, а не курсора?

У меня есть кнопка с командой по умолчанию и контекстное меню для других доступных команд:

<Button Content="Do this" Height="23" Width="75" Command="local:MyCommands.ThisCommand">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Do this" Command="local:MyCommands.ThisCommand" />
            <MenuItem Header="Do that" Command="local:MyCommands.ThatCommand" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>

По умолчанию появляется контекстное меню, начинающееся с горячей точки курсора:

Однако, я хотел бы, чтобы он появлялся в фиксированном относительном положении, под кнопкой (поддельный, отредактированный снимок экрана):

Настройка контекстного меню Placement, PlacementRectangle и PlacementTarget свойств ничего не делает; контекстное меню настаивает на зависании курсора, где я нажимаю правой кнопкой мыши. Хуже того, фокусировка кнопки и нажатие клавиши меню заставляет контекстное меню сидеть перед кнопкой, полностью блокируя ее.

Итак, как именно я указываю, что контекстное меню должно появляться под кнопкой?

4b9b3361

Ответ 1

Отметьте примечания в разделе ContextMenu.Placement

и попробуйте это

<Button Content="Do this" Height="23" Width="75" 
     ContextMenuService.Placement="Bottom"
     Command="local:MyCommands.ThisCommand">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Do this" Command="local:MyCommands.ThisCommand" />
            <MenuItem Header="Do that" Command="local:MyCommands.ThatCommand" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>