无法在首字母上更新文本框数据触发器

本文关键字:文本 更新 数据 触发器 | 更新日期: 2023-09-27 18:03:35

我正试图实现一些非常简单的东西,但我有一个非常小的问题。我有一个文本框,用户需要输入类型。类型只能是'1'或'a'。我想到的是,当用户输入其他值时,将BorderBrush更改为红色。

这似乎工作,但为了把颜色变成红色,我需要输入两个字母…如果我只按d,它会是灰色的,如果我按dd,它会变成红色。有没有办法让第一个字母变成红色?

<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding SelectedShippingRate.Type, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Margin="4" >
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Setter Property="BorderBrush" Value="Red" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedShippingRate.Type, UpdateSourceTrigger=PropertyChanged}"  Value="1">
                    <Setter Property="BorderBrush" Value="Gray" />
                </DataTrigger>
                <DataTrigger Binding="{Binding SelectedShippingRate.Type, UpdateSourceTrigger=PropertyChanged}"  Value="a">
                    <Setter Property="BorderBrush" Value="Gray" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

无法在首字母上更新文本框数据触发器

感谢大家的回复。它看起来已经工作了,但BorderBrush总是蓝色的,因为.....聚焦时,文本框边框始终是蓝色的。所以我只是在它周围添加了一个边框并在边框上添加了触发器