C# 如何将关联菜单与右下角对齐?
我有下面的代码,用于打开C# 如何将关联菜单与右下角对齐?,c#,wpf,alignment,contextmenu,C#,Wpf,Alignment,Contextmenu,我有下面的代码,用于打开矩形的上下文菜单: private void RectBtn_MouseDown(object sender, MouseButtonEventArgs e) { var cm = ContextMenuService.GetContextMenu(sender as DependencyObject); if (cm == null) return; else { cm.Placement = Placem
矩形的上下文菜单
:
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;
}
}
因此,我的上下文菜单出现时如下所示:
有没有一种方法可以从代码后面实现下面的外观(保留上面的代码)
我在上查看了解决方案,但我需要从代码背后实现它。任何帮助都将不胜感激。您的代码与您发布的图像不一致。您可以设置
底部
位置,但在屏幕截图上,关联菜单位于目标的顶部
无论如何,您可以使用自定义放置并手动计算位置:
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;
}
您的代码与您发布的图像不对应。您可以设置底部
位置,但在屏幕截图上,关联菜单位于目标的顶部
无论如何,您可以使用自定义放置并手动计算位置:
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个并排的控件(即矩形),每个控件都有相同的高度和宽度。。有没有办法让他们的上下文菜单出现在某个区域?我的意思是,假设一个网格的宽度是400,现在,在它的底部,我添加了4个宽度为100px的矩形…那么,有没有一种方法,所有的上下文菜单都会出现在它们上面,但会被卡在网格/网格区域内@扎克雷扬,这是另一个问题。请分开问,为什么?主题是一样的……你知道答案还是至少给我一些线索或一些基本想法?@zackraiyan,因为。我编辑了我的代码……我也会尝试你的代码……但最后一个问题……例如,我有4个并排的控件(即矩形),每个控件都有相同的高度和宽度。。有没有办法让他们的上下文菜单出现在某个区域?我的意思是,假设一个网格的宽度是400,现在,在它的底部,我添加了4个宽度为100px的矩形…那么,有没有一种方法,所有的上下文菜单都会出现在它们上面,但会被卡在网格/网格区域内@扎克雷扬,这是另一个问题。请分开问,为什么?主题是一样的……你知道答案吗,或者至少给我一些线索或一些基本想法?@zackraiyan,因为。