zoukankan      html  css  js  c++  java
  • WPF数据验证(5)―― 错误模板

     <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提示

     
  • 相关阅读:
    Linux下安装JDK
    Flink源码阅读(五)——Flink中任务相关的核心类简析
    使用CloudFlare Worker 来免费部署 JSProxy 服务
    Nginx:进程调度
    Javassist基本用法汇总
    IO
    IO
    springcloud3(五) spring cloud gateway动态路由的四类实现方式
    架构设计(二) 互联网网关平台对比
    Python 的协程
  • 原文地址:https://www.cnblogs.com/sjqq/p/6951230.html
Copyright © 2011-2022 走看看