我创建了一个custonmized框类(继承自ComboBox)。我不希望文本框对鼠标右键单击做出反应。我可以通过在ApplyTemplate中将其设置为null来摆脱上下文菜单,但是鼠标右键单击会移动光标。我尝试在ApplyTemplate中连接PreviewMouseRightButtonDown并将Handled设置为True,但事件仍然通过,这很奇怪,因为它似乎适用于左键单击。
答案 0 :(得分:2)
释放鼠标按钮时光标实际移动,因此您希望将MouseRightButtonUp事件标记为已处理。您可以覆盖OnMouseRightButtonUp:
protected override void OnMouseRightButtonUp(MouseButtonEventArgs e)
{
base.OnMouseRightButtonUp(e);
e.Handled = true;
}
或者您可以将类处理程序附加到MouseRightButtonUp事件以将其标记为已处理:
static MyComboBox()
{
EventManager.RegisterClassHandler(
typeof(MyComboBox),
MouseRightButtonUpEvent,
new MouseButtonEventHandler(MyComboBox_MouseRightButtonUp));
}
private static void MyComboBox_MouseRightButtonUp(
object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
这也会阻止创建上下文菜单,而不必显式设置为null。