【发布时间】:2011-12-07 21:48:08
【问题描述】:
我必须承认我找不到更好的标题。
我有一个控件,它的下部包含一个文本框。这个控件有一个 ContextMenu,当然 TextBox 也有它的普通文本编辑 ContextMenu。 当我右键单击外部控件时,它的 ContextMenu 会打开,这就是我想要的。如果我右键单击文本框,它会获得焦点并打开它的文本编辑上下文菜单。但是当我右键单击文本框并且它没有键盘焦点时,我不想设置焦点并且不想打开文本框上下文菜单,而是应该打开外部控件上下文菜单。
我唯一能做的就是在右键单击文本框时忽略文本框的上下文菜单。 (为了测试我创建了一个从 TextBox 派生的控件)
protected override void OnMouseDown(MouseButtonEventArgs aArgs)
{
if(aArgs.ChangedButton == MouseButton.Right)
{
return;
}
base.OnMouseDown(aArgs);
}
即使这样做,文本框 OnContextMenuOpening 也会被触发,但无论处理的是真还是假,都不会打开任何上下文菜单。
我希望有人有一个想法。
【问题讨论】:
-
如果你使用
PreviewMouseDown而不是MouseDown会发生同样的事情吗? -
@Rachel hm,没试过,但我会说不,因为我不处理鼠标事件。我希望,从这个鼠标处理返回会将事件传递给它下面的下一个控件。但我会试一试。
标签: c# wpf contextmenu