如何将上下文菜单对齐到右下角?
Posted
技术标签:
【中文标题】如何将上下文菜单对齐到右下角?【英文标题】:How to align the context menu to bottom right? 【发布时间】:2018-11-08 11:05:11 【问题描述】:我有以下代码用于打开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 上查看了解决方案,但我需要从后面的代码中实现它。任何帮助将不胜感激。
【问题讨论】:
这可能会帮助您继续前进:msdn.microsoft.com/en-us/library/ms750577(v=vs.85).aspx 【参考方案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;
【讨论】:
我编辑了我的代码......我也会尝试你的代码......但最后一个问题......例如,我有 4 个并排的控件(即矩形),每个控件都有相同的高度和宽度.. 有没有办法让他们的上下文菜单出现在某个区域?我的意思是,假设 grid'w 的宽度是 400,现在,在它的底部,我添加了 4 个 100px 宽度的矩形......那么,有没有办法,它们的所有上下文菜单都会出现在它们上方但会卡在网格/网格区域内? sample image @zackraiyan,这是一个不同的问题。请单独询问。 为什么?题目是一样的....你知道答案或者至少给我一些线索或者一些基本的想法吗? @zackraiyan,因为this。以上是关于如何将上下文菜单对齐到右下角?的主要内容,如果未能解决你的问题,请参考以下文章