[WPF] 让第一个数据验证出错(Validation.HasError)的控件自动获得焦点

1. 需求

在上一篇文章 《在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点》中介绍了如何让 Validation.HasError 的控件自动获得焦点,之后引申了另一个问题:如果有多个 HasError 的控件,如何只让第一个自动获得焦点。

这需求比较常见,所以我试着解决这个问题,最终完成了一个 Demo,XAML 如下:

<StackPanel local:ValidationService.IsValidationScope="True">
    <StackPanel.Resources>
        <Style BasedOn="{StaticResource {x:Type TextBox}}"
               TargetType="TextBox">
            <Setter Property="local:ValidationService.AutoFocusWhenValidationError"
                    Value="True" />
        </Style>
    </StackPanel.Resources>
    <TextBox Text="{Binding Name, Mode=TwoWay, NotifyOnValidationError=True}" />
    <TextBox Text="{Binding Name, Mode=TwoWay, NotifyOnValidationError=True}" />
    <TextBox Text="{Binding Name, Mode=TwoWay, NotifyOnValidationError=True}" />
    <Button Margin="5"
            Command="{Binding SubmitCommand}"
            Content="Submit" />
</StackPanel>

为了实现这个功能用到了几个入门知识,这篇文章讲解如何组合这几个入门知识实现需求:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值