【发布时间】:2012-01-28 09:34:09
【问题描述】:
我目前正在制作一个上下文菜单,它从左键单击而不是右键单击打开,为此我通过像这样处理 ContextMenuOpening 事件来禁止右键单击
private void PinBorder_ContextMenuOpening(object sender, System.Windows.Controls.ContextMenuEventArgs e)
{
e.Handled = true;
}
我自己打开上下文菜单,以响应 MouseButtonLeftDown 事件,如下所示:
private void PinBorder_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
PinBorder.ContextMenu.PlacementTarget = PinBorder;
PinBorder.ContextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Center;
PinBorder.ContextMenu.HorizontalOffset = 0;
PinBorder.ContextMenu.VerticalOffset = 0;
PinBorder.ContextMenu.IsOpen = true;
e.Handled = true;
}
这里的问题是,当第一次打开 ContextMenu 时一切正常,但是如果我将一个项目添加到绑定到上下文菜单的可观察集合并尝试重新打开它,上下文菜单会被剪裁到之前的大小(如果我尝试使用向上/向下键移动上下文菜单选择 我可以猜到已经创建了一个条目,但我看不到它,因为它被剪辑了)。
我试图删除点击抑制的东西,在这种情况下一切都很顺利。
我在 .net framework 3.5 中读到过这样的问题,但我的目标是 4.0。
有人有解决办法吗?
【问题讨论】:
-
我现在不在可以测试它的计算机上,但我的第一个想法是上下文菜单控件设置为在右键单击时调整大小,并且以这种方式打开它不会t 触发调整大小功能。也许尝试在您的上下文菜单上调用
UpdateLayout()? -
我尝试了 UpdateLayout() 和 InvalidateMeasure() 但没有任何改变。
-
这有点骇人听闻......但也许你可以通过模拟右键单击打开它?
-
你知道怎么做吗?
标签: wpf contextmenu clipping