积极答复者
ComboBox item点击事件被截取

问题
-
<ComboBox>
....
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<EventSetter Event="MouseLeftButtonDown" Handler="ComboBoxItem_MouseClick"/> </Style> </ComboBox.ItemContainerStyle>
</ComboBox>
当我事件为MouseLeftButtonDown时无法收到该事件,使用PreviewMouseLeftButtonDown后可以收到事件,但是无法收到SelectionChanged事件了,如何将被截取的事件触发出来?
Ths
答案
-
这个我也实现过,PreviewMouseLeftButtonDown的话,不是完整的,因为我需要做的事click事件,就是确保鼠标按下和弹起的控件都是同一个控件才处理。貌似在模板使用EventSetter 不能实现。我重新设计了 下,我在datatemplate里面放了一个Button,使用的是button的click事件。如果有更好的不需要修改datatemplate就可以实现的方法的话,也烦请说下,谢了
至多2天后结贴
- 已标记为答案 Franklin ChenMicrosoft employee, Moderator 2013年11月26日 10:04
全部回复
-
为什么一定要用这个事件呢,直接用SelectionChanged事件不就可以了吗。。。
<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>
-
这个我也实现过,PreviewMouseLeftButtonDown的话,不是完整的,因为我需要做的事click事件,就是确保鼠标按下和弹起的控件都是同一个控件才处理。貌似在模板使用EventSetter 不能实现。我重新设计了 下,我在datatemplate里面放了一个Button,使用的是button的click事件。如果有更好的不需要修改datatemplate就可以实现的方法的话,也烦请说下,谢了
至多2天后结贴
- 已标记为答案 Franklin ChenMicrosoft employee, Moderator 2013年11月26日 10:04