按钮处理MouseLeftButtonDown但仍希望事件冒泡

时间:2011-09-22 15:46:00

标签: wpf button selected listboxitem event-bubbling

我有一个带有DataTemplate的列表框。 在我的模板中,我有一个标签和3个按钮。

我的问题是,当我点击按钮时,listboxitem永远不会被选中,因为按钮处理事件。

有没有办法可以让事件仍然在树上冒泡,这样我的listboxitem会被选中并仍然点击按钮?

1 个答案:

答案 0 :(得分:-1)

将其放入ListBox.Resources

<Style TargetType="{x:Type ListBoxItem}">
    <EventSetter Event="PreviewGotKeyboardFocus" Handler="SelectCurrentItem"/>
</Style>

这就在Code Behind中

protected void SelectCurrentItem(object sender, KeyboardFocusChangedEventArgs e)
{
    ListBoxItem item = (ListBoxItem)sender;
    item.IsSelected = true;
}

您也可以使用以下代码,但不使用代码隐藏,但只要它具有KeyBoard焦点,它只会保持ListBoxItem的选择。焦点离开后,该项目将被取消选择

<Style TargetType="ListBoxItem">
  <Style.Triggers>
    <Trigger Property="IsKeyboardFocusWithin" Value="True">
      <Setter Property="IsSelected" Value="True" />
    </Trigger>
  </Style.Triggers>
</Style>