Как не дать текстовому полю WPF внутри комбо реагировать на щелчки правой кнопкой мыши? - PullRequest
1 голос
/ 12 сентября 2010

Я создал класс custonmized box (наследуется от ComboBox). Я не хочу, чтобы текстовое поле реагировало на щелчки правой кнопкой мыши. Я могу избавиться от контекстного меню, установив его в null в ApplyTemplate, но щелчки правой кнопкой мыши перемещают курсор. Я попытался подключить PreviewMouseRightButtonDown в ApplyTemplate и установить для параметра Handled значение True, но событие все равно проходит, что странно, так как кажется, что оно работает для левого клика.

1 Ответ

2 голосов
/ 12 сентября 2010

Курсор фактически перемещается при отпускании кнопки мыши, поэтому вы хотите пометить событие 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;
}

Это также предотвратитконтекстное меню создано без необходимости явно устанавливать его на нуль.

...