要事先必填验证,首先要重写ValidationRule类的Validate方法,然后在Binding中指定对应的ValidationRule。

第一步:重写ValidationRule的Validate

  1. public class RequiredValidationRule:ValidationRule {
  2. public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) {
  3. if (value == null || string.IsNullOrWhiteSpace(value.ToString())) {
  4. return new ValidationResult(false, "内容不能为空");
  5. }
  6. return new ValidationResult(true, null);
  7. }
  8. }

第二步:窗体:

  1. <TextBox Grid.Row="0" Grid.Column="1"
  2. Validation.ErrorTemplate="{StaticResource CT_TextBox_Required}"
  3. Style="{StaticResource Style_TextBox_Error}"
  4. <TextBox.Text>
  5. <Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
  6. <Binding.ValidationRules>
  7. <vr:RequiredValidationRule />
  8. </Binding.ValidationRules>
  9. </Binding>
  10. </TextBox.Text>
  11. </TextBox>

第三步:错误控件的样式

  1. <ControlTemplate x:Key="CT_TextBox_Required">
  2. <DockPanel>
  3. <TextBlock Foreground="Red" FontSize="20" Text="!" />
  4. <AdornedElementPlaceholder />
  5. </DockPanel>
  6. </ControlTemplate>
  7. <Style x:Key="Style_TextBox_Error" TargetType="{x:Type TextBox}">
  8. <Setter Property="Margin" Value="10,5,20,5" />
  9. <Style.Triggers>
  10. <Trigger Property="Validation.HasError" Value="true">
  11. <Setter Property="ToolTip"
  12. Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}" />
  13. </Trigger>
  14. </Style.Triggers>
  15. </Style>

我们来看看效果图:,貌似不错,但是还有不尽人意之处。在控件Focus时,控件内容为空,我希望此时就显示错误提示,而不是更改后再显示错误提示,首先要添加PreviewGotKeyboardFocus事件

  1. private void TextBox_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) {
  2. TextBox tb = sender as TextBox;
  3. tb.GetBindingExpression(TextBox.TextProperty).UpdateSource();
  4. }

好,我们轻松地实现了必填验证

http://blog.csdn.net/The_Eyes/article/details/61415096

WPF验证之——必填验证的更多相关文章

  1. RequiredFieldValidator控件--必填验证控件

    RequiredFieldValidator控件: ·RequiredFieldValidator控件也被称之为必填验证控件,顾名思义,也就是与RequiredFieldValidator控件关联的控 ...

  2. js页面字段的必填验证方法

    https://blog.csdn.net/fn_2015/article/details/73498462 <script type="text/javascript" s ...

  3. 工作总结 MVC 验证 [Required] 必填 与 string 小知识

    例如 添加页面有个 title  字段  设置了 [Required] 不填的时候   设置 还是验证不通过 设置为 还是不通过  说明了  验证只与页面上传不传值有关   与在后台设不设置值 无关. ...

  4. iview表单验证--数字必填+校验

    直接使用: { required: true, type:"integer", message:"请填写整数", trigger: "blur&quo ...

  5. ASP.NET中Textbox后的必填验证控件RequiredFieldValidator的使用方法。

    制作效果如下: 实现方法: 1. 拖动RequiredFieldValidator控件到相应的textbox后位置,点击属性面板,输入ErroMessage相应信息,更改ForeColor为红色 设置 ...

  6. kendo upload必填验证

    @using Kendo.Mvc.UI @using StudentManage.Common.Helper @model StudentManage.Models.Home.ImportDataFr ...

  7. Layui 必填验证

    lay-verify="required"

  8. Element 中表单非必填数据项 必须为数字的验证问题

    Element-ui 的el-form组建中,自带基本的验证功能,比如某些项必填的验证,直接加入rules 规则中即可,如下实例: 在页面中书写如下: <el-form-item label=& ...

  9. PHP 表单验证 - 必填字段

    -------------------------------------------------------------------------- 本节展示如何制作必填输入字段,并创建需要时所用的错 ...

随机推荐

  1. 【转】java与C++的区别

    转自:http://club.topsage.com/thread-265349-1-1.html Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同: (1)Java比C++程 ...

  2. setImmediate 函数详解

    1.兼容性 只有IE10以上的IE浏览器才支持. 2.用途 https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setImmediate 该 ...

  3. Openerp开发进销存系统完毕总结

      转自:http://blog.csdn.net/heartrude/article/details/9142463 安装Openoffice 在openoffice中安装openerp repor ...

  4. Hibernate 入门示例

    版权声明:本文为博主原创文章,如需转载请标注转载地址 博客地址:http://www.cnblogs.com/caoyc/p/5593406.html  环境: myelipse2015+Hibern ...

  5. 【Spark】Spark的Standalone模式安装部署

    Spark执行模式 Spark 有非常多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则执行在集群中,眼下能非常好的执行在 Yarn和 Mesos 中.当然 Spark 还有自带的 St ...

  6. Exception sending context initialized event to listener instance of class ssm.blog.listener.InitBloggerData java.lang.NullPointerException at ssm.blog.listener.InitBloggerData.c

     spring注入是分两部分执行的     首先是 先把需要注入的对象加载到spring容器     然后在把对象注入到具体需要注入的对象里面   这种就是配置和注解的注入    getbean方式其 ...

  7. CSS/JQuery元素选择器之&amp;&amp;和||,选择器的逻辑操作

    使用CSS或JQuery选中元素的时候.非常多时候我们须要对条件进行&&或者||操作. JQuery或者CSS中的||操作是非经常常使用的.也非常easy,就是通过逗号来分隔的. se ...

  8. Intellij IDEA配置优化

    1. 在线激活 安装IntelliJ IDEA 2016.1.2版本后,在联网状态下激活.Help --> Register,选择lisence server,粘贴地址http://idea.i ...

  9. jquery cookie操作方法

    1. 设置cookie的值,把name变量的值设为value     $.cookie(’name’, ‘value’);  2.新建一个cookie 包括有效期 路径 域名等 $.cookie(’n ...

  10. U3D Debug.DrawRay

    Debug.DrawRay第二个参数方向,事实上需要手动输入长度.并且不是无限长的射线,是根据方向的长度来的 如果参数不指定颜色,绘制出来的就是白色