列表框项目在其文本框失去焦点时被取消选择

本文关键字:选择 焦点 取消 文本 项目 列表 失去 | 更新日期: 2023-09-27 18:23:58

在我的应用程序中,我有一个ListBox,其ListBoxItems呈现为TextBoxes。每当TextBox获得键盘焦点时,我希望该项目被选中。我对它应用了以下Trigger

<Trigger Property="IsKeyboardFocusWithin" Value="true">
    <Setter Property="IsSelected" Value="true" />
</Trigger>

然而,我不希望在TextBox失去焦点时取消选择该项目,这就是我目前得到的。这意味着,例如,我无法通过从ComboBox中选择TextBox来更改其字体大小。

上述代码是在ResourceDictionary文件中的Template中定义的。

列表框项目在其文本框失去焦点时被取消选择

您可以使用Storyboard在项目获得焦点时选择项目,因此它仅适用于选择

    <ListBox ...>
        <ListBox.ItemTemplate>
            <!-- your DataTemplate -->
        </ListBox.ItemTemplate>
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}">
                <Style.Triggers>
                    <EventTrigger RoutedEvent="GotKeyboardFocus">
                        <BeginStoryboard>
                            <Storyboard>
                                <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsSelected">
                                    <DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:0"/>
                                </BooleanAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>

这样项目在失去焦点时不会自动取消选择