我有以下代码用于打开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;
}
}
因此,我的上下文菜单出现时如下所示:
有没有办法从后面的代码中实现以下外观(保留上面的代码)?
我查看了this SO post上的解决方案,但我需要从后面的代码中实现它。任何帮助将不胜感激。
答案 0 :(得分:1)
您的代码与您发布的图片不对应。您设置了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;
}