我有一个带有DataTemplate的列表框。 在我的模板中,我有一个标签和3个按钮。
我的问题是,当我点击按钮时,listboxitem永远不会被选中,因为按钮处理事件。
有没有办法可以让事件仍然在树上冒泡,这样我的listboxitem会被选中并仍然点击按钮?
答案 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>