none
ComboBox item点击事件被截取 RRS feed

  • 问题

  • <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

    2013年11月19日 1:26

答案

  • 这个我也实现过,PreviewMouseLeftButtonDown的话,不是完整的,因为我需要做的事click事件,就是确保鼠标按下和弹起的控件都是同一个控件才处理。貌似在模板使用EventSetter 不能实现。我重新设计了 下,我在datatemplate里面放了一个Button,使用的是button的click事件。如果有更好的不需要修改datatemplate就可以实现的方法的话,也烦请说下,谢了

    至多2天后结贴

    2013年11月21日 7:51

全部回复

  • 为什么一定要用这个事件呢,直接用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>

    2013年11月19日 9:42
  • 就是采用SelectionChanged不能实现才这么做的,因为需要的是点击事件,采用SelectionChanged的话点击相同的item时就不触发事件了,比如我要实现点击item更改item的颜色,采用SelectionChanged的话,你实现不了
    2013年11月20日 1:29
  • 点击item更改item颜色,用SelectionChanged同样可以实现, 利用SelectedIndex定位到点击的item,再修改颜色即可
    2013年11月20日 1:51
  • 是点击item一次更改一次颜色,在2种颜色之间切换
    2013年11月21日 0:32
  • 我实验了下,使用PreviewMouseLeftButtonDown的话,是可以收到 SelectionChanged事件的。

    但是对于你说的对于同一项改变颜色,可能还需要重写Dropdownlist行为,使得PreviewMouseLeftButtonDown可以准确定位到这一项

    2013年11月21日 2:03
  • 这个我也实现过,PreviewMouseLeftButtonDown的话,不是完整的,因为我需要做的事click事件,就是确保鼠标按下和弹起的控件都是同一个控件才处理。貌似在模板使用EventSetter 不能实现。我重新设计了 下,我在datatemplate里面放了一个Button,使用的是button的click事件。如果有更好的不需要修改datatemplate就可以实现的方法的话,也烦请说下,谢了

    至多2天后结贴

    2013年11月21日 7:51