zoukankan      html  css  js  c++  java
  • WPF验证错误显示

    WPF 显示验证错误的默认方式是在控件周围绘制红色边框。通常需要对此方法进行自定义,以通过其他方式来显示错误。而且,默认情况下不会显示与验证错误关联的错误消息。常见的要求是仅当存在验证错误时才在工具提示中显示错误消息。通过将 Styles 和一组与验证关联的附加属性进行组合,可以相当轻松地自定义验证错误显示。

    添加显示错误文本的工具提示非常简单。只需定义一个应用于输入控件的 Style,每当存在验证错误时,它便将该控件上的 ToolTip 属性设置为验证错误文本。若要对此提供支持,需要使用两个附加属性:Validation.HasError 和 Validation.Errors。下面演示了一个针对 TextBox 类型并设置工具提示的 Style:

     1 <Style TargetType="TextBox">
     2   <Style.Triggers>
     3     <Trigger Property="Validation.HasError" 
     4              Value="True">
     5       <Setter Property="ToolTip">
     6         <Setter.Value>
     7           <Binding 
     8             Path="(Validation.Errors).CurrentItem.ErrorContent"
     9             RelativeSource="{x:Static RelativeSource.Self}" />
    10         </Setter.Value>
    11       </Setter>
    12     </Trigger>
    13   </Style.Triggers>
    14 </Style>

    您可以看到,Style 只包含 Validation.HasError 附加属性的属性触发器。当 Binding 更新其源对象属性且验证机制生成错误时,HasError 属性会设置为 true。这种情况可能源自异常、ValidationRule 或 IDataErrorInfo 调用。该 Style 随后使用 Validation.Errors 附加属性,该属性会在存在验证错误时包含一个错误字符串集合。可以使用该集合类型的 CurrentItem 属性来仅获取集合中的第一个字符串。也可以设计为将数据绑定到集合,并为面向列表的控件中的每一项显示 ErrorContent 属性。

    若要将控件的默认验证错误显示更改为红色边框之外的内容,需要将 Validation.ErrorTemplate 附加属性设置为要自定义的控件上的新模板。在示例应用程序中,将在存在错误的每个控件右侧显示一个小的红色渐变圆形,而不是显示红色边框。为此,可定义用作 ErrorTemplate 的控件模板。

     1 <ControlTemplate x:Key="InputErrorTemplate">
     2   <DockPanel>
     3     <Ellipse DockPanel.Dock="Right" Margin="2,0" 
     4              ToolTip="Contains invalid data"
     5              Width="10" Height="10">
     6       <Ellipse.Fill>
     7         <LinearGradientBrush>
     8           <GradientStop Color="#11FF1111" Offset="0" />
     9           <GradientStop Color="#FFFF0000" Offset="1" />
    10         </LinearGradientBrush>
    11       </Ellipse.Fill>
    12     </Ellipse>
    13     <AdornedElementPlaceholder />
    14   </DockPanel>
    15 </ControlTemplate>

    若要将该控件模板挂接到某个控件,只需设置该控件的 Validation.ErrorTemplate 属性,您可以通过 Style 再次执行此操作:

    1 <Style TargetType="TextBox">
    2   <Setter Property="Validation.ErrorTemplate" 
    3     Value="{StaticResource InputErrorTemplate}" />
    4   ...
    5 </Style>
    作者:backslash112 (美国CS研究生在读/机器人工程师)
    出处:http://sirkevin.cnblogs.com
    GitHub:https://github.com/backslash112
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    高可用性机制
    Moodle课程资源系统安装
    Windows 10 安装 chocolatey
    centos7安装samba服务器
    抽签网页板代码
    CentOS7系统操作httpd服务
    centos7.2下放行端口
    centos7没有netstat命令的解决办法
    Linux
    Linux下常用服务的端口号超详细整理
  • 原文地址:https://www.cnblogs.com/sirkevin/p/2609190.html
Copyright © 2011-2022 走看看