选中ListBoxItem中的TextBox,就选中ListBox的SelectedItem

首先先设定Style。其中触发器的Property为UIElement.IsKeyboardFocusWithin

<Style TargetType="{x:Type ListBoxItem}" x:Key="ListBoxItemStyle">
    <Style.Triggers>
        <Trigger Property="IsKeyboardFocusWithin" Value="true">
            <Setter Property="IsSelected" Value="true"/>
        </Trigger>
    </Style.Triggers>
</Style>

然后修改ListBox的ItemContainerStyle

<Style TargetType="{x:Type ListBox}" x:Key="lbHorizontalItem">
   <Setter Property="ItemContainerStyle" Value="{DynamicResource ListBoxItemStyle}"/>
</Style>

但是此时就会遇到一个问题,虽然在ListBox内部点击TextBox会切换样式,当点击ListBox外部的时候,即ListBox失去了焦点的时候,SelectedItem的样式就消失了,而这并不是我们想要到。用如下的解决方法

<Style TargetType="{x:Type ListBoxItem}" x:Key="ListBoxItemStyle">
    <Style.Triggers>
        <Trigger Property="IsKeyboardFocusWithin" Value="true">
            <Setter Property="IsSelected" Value="true"/>
        </Trigger>
        <!--下面这个是新加的-->
        <EventTrigger RoutedEvent="PreviewGotKeyboardFocus">
            <BeginStoryboard>
                <Storyboard>
                    <BooleanAnimationUsingKeyFrames
                Storyboard.TargetProperty="(ListBoxItem.IsSelected)">
                        <DiscreteBooleanKeyFrame KeyTime="0" Value="True"/>
                    </BooleanAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Style.Triggers>
</Style>
                

参考stackoverflow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值