WPF数据验证(5)―― 错误模板

WPF验证错误样式
本文介绍了一种在WPF应用程序中实现验证错误样式的详细方法。通过定义自定义的ControlTemplate,可以为输入错误提供视觉反馈,如在文本框旁边显示错误图标并在鼠标悬停时显示错误提示。

 <Style TargetType="{x:Type TextBox}">
            <Setter Property="Validation.ErrorTemplate">
                <Setter.Value>
                    <ControlTemplate>
                        <DockPanel LastChildFill="True">
                            <TextBlock DockPanel.Dock="Bottom" Foreground="Red"
                                       Text="{Binding ElementName=adorned,Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
                            <Border BorderBrush="Red" BorderThickness="1">
                                <AdornedElementPlaceholder x:Name="adorned"/>
                            </Border>
                        </DockPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

  AdornedElementPlaceholder 是这种技术能够工作的粘合剂。她代表控件自身,位于元素层中。通过使用 AdornedElementPlaceholder 元素,能够在文本框背后安排自己的内容。

  

 

 

该模板放在资源文件中

<ControlTemplate x:Key="InputErrorTemplate">

        <DockPanel>
            <Ellipse 
                  DockPanel.Dock="Right" 
                  Margin="2,0"
                  ToolTip="Contains invalid data"
                  Width="10" Height="10"   
                  >
                <Ellipse.Fill>
                    <LinearGradientBrush>
                        <GradientStop Color="#11FF1111" Offset="0" />
                        <GradientStop Color="#FFFF0000" Offset="1" />
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <AdornedElementPlaceholder />
        </DockPanel>

    </ControlTemplate>

 

 

    <Style TargetType="TextBox">
        <Setter Property="Validation.ErrorTemplate" 
                Value="{StaticResource InputErrorTemplate}" 
         />
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="True">
                <Setter Property="ToolTip">
                    <Setter.Value>
                        <Binding 
                            Path="(Validation.Errors).CurrentItem.ErrorContent"
                            RelativeSource="{x:Static RelativeSource.Self}"
                            />
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>

    </Style>

出错效果是在文本框中显示TOOLTIP提示

 

转载于:https://www.cnblogs.com/sjqq/p/6951230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值