2013-04-11 52 views
1

WPF ComboBox控件允許兩種方式用鼠標更改選擇。WPF組合框選擇行爲

  • 您用鼠標點擊/彈出,彈出窗口出現,然後點擊您想要選擇的項目。

  • 你點擊並按住。出現彈出窗口,將鼠標放在要選擇的項目上並釋放鼠標按鈕。 MouseUp事件發生時鼠標所在的項目被選中。

有沒有辦法消除behavior #2?即讓他們執行2次完整的向下/向上點擊來改變選擇?

+0

我看了一個鼠標,向上看,預覽下來,並預覽。預覽後沒有任何幫助選擇總是激活。 – Paparazzi 2013-04-11 21:02:27

回答

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 2013-04-12 20:39:45