我曾经尝试了几个小时,但它没有用.
我有一个组合框,里面有几个项目,像搜索框一样动态生成.
现在,我想捕获一个事件,当用户单击下拉菜单项时,或单击下拉菜单项.
怎么做到这一点?我试图在Combobox上设置鼠标/键盘事件处理程序,但它只适用于组合框的文本框,而不是在下拉列表中.
谢谢.
编辑:我忘了提到我的Combobox上有自定义DataTemplate.我尝试了另一种在ComboBox.ItemContainerStyle中设置事件的方法.
我尝试了PreviewKeyDown,但没有捕获.任何的想法?
而不是使用该MouseLeftButtonDown事件,使用该PreviewMouseLeftButtonDown事件
WPF支持"事件冒泡"概念,当事件被触发时,它会冒泡实现该事件的树上的更高元素.但是ComboBox本身已经实现了click事件.所以你必须告诉它"向下"冒泡.
我认为你所寻找的是"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)