2013-04-11 4 views
1

WPF ComboBox Элементы управления позволяют осуществлять два способа изменить выделение мышью.WPF Combobox selection behavior

  • Вы щелкаете мышкой вверх/вниз, появляется всплывающее окно, затем вы выбираете элемент, который хотите выбрать.

  • Вы щелкаете и удерживаете. Появится всплывающее окно, наведите указатель мыши на элемент, который вы хотите выбрать, и отпустите кнопку мыши. Выбран элемент, который вы нажмете на момент события MouseUp.

Есть ли способ устранить behavior #2? Т.е. заставить их выполнить 2 полных клика по нажатию кнопки вверх, чтобы изменить выбор?

+0

Я посмотрел на мышь вниз, вверх, предварительный просмотр вниз и предварительный просмотр. Никакая подсказка помощи не меняется всегда после предварительного просмотра. – Paparazzi

ответ

2

Это, возможно, не не очень, но комбинируя несколько событий, кажется, делать то, что вы после:

private bool _comboMouseDown = false; 
private bool _comboSelectionDisabled = false; 

private void ComboBox_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    _comboMouseDown = true; 
} 

private void ComboBox_DropDownOpened(object sender, EventArgs e) 
{ 
    if (_comboMouseDown) 
    { 
     //Don't enable selection until the user releases the mouse button: 
     _comboSelectionDisabled = true; 
    } 
} 

private void ComboBox_PreviewMouseUp(object sender, MouseButtonEventArgs e) 
{ 
    if (_comboSelectionDisabled) 
    { 
     //Stop the accompanying "MouseUp" event (which would select an item) from firing: 
     e.Handled = true; 

     _comboSelectionDisabled = false; 
    } 

    _comboMouseDown = false; 
} 

1) Тем не менее работает в обычном режиме

2) Нажмите и удерживайте до сих пор открывает всплывающее окно, но вам нужно отпустить и снова щелкнуть, чтобы выбрать элемент.

+0

Фантастический! Благодарю вас, это именно то, что я искал. – eoldre