Кнопка обрабатывает MouseLeftButtonDown, но все же хочет, чтобы событие всплыло - PullRequest
1 голос
/ 22 сентября 2011

У меня есть список с DataTemplate для элементов.Внутри моего шаблона у меня есть метка и 3 кнопки.

Моя проблема в том, что когда я нажимаю кнопки, элемент списка никогда не выбирается, поскольку кнопка обрабатывает событие.

Есть ли способЯ мог бы заставить событие по-прежнему пузыриться в дереве, чтобы мой элемент списка становился выбранным и все еще вызывал щелчок по кнопке?

1 Ответ

0 голосов
/ 22 сентября 2011

Поместите это в ваш ListBox.Resources

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

И это в коде позади

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

Вы также можете использовать следующий код, который не использует выделенный код, однако он сохраняет выбранный ListBoxItem, пока он имеет фокус KeyBoard. Как только фокус исчезает, предмет становится невыбранным

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