2013-04-11 51 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