单击WPF组合框项目或通过Enter键选择时如何捕获事件?

VHa*_*ded 6 wpf combobox

我曾经尝试了几个小时,但它没有用.

我有一个组合框,里面有几个项目,像搜索框一样动态生成.

现在,我想捕获一个事件,当用户单击下拉菜单项时,或单击下拉菜单项.

怎么做到这一点?我试图在Combobox上设置鼠标/键盘事件处理程序,但它只适用于组合框的文本框,而不是在下拉列表中.

谢谢.

编辑:我忘了提到我的Combobox上有自定义DataTemplate.我尝试了另一种在ComboBox.ItemContainerStyle中设置事件的方法.

我尝试了PreviewKeyDown,但没有捕获.任何的想法?

Not*_*ter 8

而不是使用该MouseLeftButtonDown事件,使用该PreviewMouseLeftButtonDown事件

WPF支持"事件冒泡"概念,当事件被触发时,它会冒泡实现该事件的树上的更高元素.但是ComboBox本身已经实现了click事件.所以你必须告诉它"向下"冒泡.


Bru*_*uno 5

我认为你所寻找的是"SelectionChanged"事件.只要您通过鼠标单击或使用箭头键导航并点击"Enter"(我尝试成功),您就会在下拉列表中选择一个项目时引发此事件.

       <ComboBox x:Name="cbobox" ItemsSource="{Binding SourceList}" 
              SelectionChanged="cbobox_SelectionChanged">
        <ComboBox.ItemContainerStyle>
            <Style TargetType="{x:Type ComboBoxItem}">
                <Setter Property="Template" >
                    <Setter.Value>
                        <ControlTemplate>
                            <TextBlock Text="{Binding BusinessProperty}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ComboBox.ItemContainerStyle>
    </ComboBox>
Run Code Online (Sandbox Code Playgroud)