WPF验证之——必填验证
要事先必填验证,首先要重写ValidationRule类的Validate方法,然后在Binding中指定对应的ValidationRule。
第一步:重写ValidationRule的Validate
- public class RequiredValidationRule:ValidationRule {
- public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) {
- if (value == null || string.IsNullOrWhiteSpace(value.ToString())) {
- return new ValidationResult(false, "内容不能为空");
- }
- return new ValidationResult(true, null);
- }
- }
第二步:窗体:
- <TextBox Grid.Row="0" Grid.Column="1"
- Validation.ErrorTemplate="{StaticResource CT_TextBox_Required}"
- Style="{StaticResource Style_TextBox_Error}"
- <TextBox.Text>
- <Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
- <Binding.ValidationRules>
- <vr:RequiredValidationRule />
- </Binding.ValidationRules>
- </Binding>
- </TextBox.Text>
- </TextBox>
第三步:错误控件的样式
- <ControlTemplate x:Key="CT_TextBox_Required">
- <DockPanel>
- <TextBlock Foreground="Red" FontSize="20" Text="!" />
- <AdornedElementPlaceholder />
- </DockPanel>
- </ControlTemplate>
- <Style x:Key="Style_TextBox_Error" TargetType="{x:Type TextBox}">
- <Setter Property="Margin" Value="10,5,20,5" />
- <Style.Triggers>
- <Trigger Property="Validation.HasError" Value="true">
- <Setter Property="ToolTip"
- Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}" />
- </Trigger>
- </Style.Triggers>
- </Style>
我们来看看效果图:
,貌似不错,但是还有不尽人意之处。在控件Focus时,控件内容为空,我希望此时就显示错误提示,而不是更改后再显示错误提示,首先要添加PreviewGotKeyboardFocus事件
- private void TextBox_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) {
- TextBox tb = sender as TextBox;
- tb.GetBindingExpression(TextBox.TextProperty).UpdateSource();
- }
好,我们轻松地实现了必填验证
http://blog.csdn.net/The_Eyes/article/details/61415096
WPF验证之——必填验证的更多相关文章
- RequiredFieldValidator控件--必填验证控件
RequiredFieldValidator控件: ·RequiredFieldValidator控件也被称之为必填验证控件,顾名思义,也就是与RequiredFieldValidator控件关联的控 ...
- js页面字段的必填验证方法
https://blog.csdn.net/fn_2015/article/details/73498462 <script type="text/javascript" s ...
- 工作总结 MVC 验证 [Required] 必填 与 string 小知识
例如 添加页面有个 title 字段 设置了 [Required] 不填的时候 设置 还是验证不通过 设置为 还是不通过 说明了 验证只与页面上传不传值有关 与在后台设不设置值 无关. ...
- iview表单验证--数字必填+校验
直接使用: { required: true, type:"integer", message:"请填写整数", trigger: "blur&quo ...
- ASP.NET中Textbox后的必填验证控件RequiredFieldValidator的使用方法。
制作效果如下: 实现方法: 1. 拖动RequiredFieldValidator控件到相应的textbox后位置,点击属性面板,输入ErroMessage相应信息,更改ForeColor为红色 设置 ...
- kendo upload必填验证
@using Kendo.Mvc.UI @using StudentManage.Common.Helper @model StudentManage.Models.Home.ImportDataFr ...
- Layui 必填验证
lay-verify="required"
- Element 中表单非必填数据项 必须为数字的验证问题
Element-ui 的el-form组建中,自带基本的验证功能,比如某些项必填的验证,直接加入rules 规则中即可,如下实例: 在页面中书写如下: <el-form-item label=& ...
- PHP 表单验证 - 必填字段
-------------------------------------------------------------------------- 本节展示如何制作必填输入字段,并创建需要时所用的错 ...
随机推荐
- 【转】java与C++的区别
转自:http://club.topsage.com/thread-265349-1-1.html Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同: (1)Java比C++程 ...
- setImmediate 函数详解
1.兼容性 只有IE10以上的IE浏览器才支持. 2.用途 https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setImmediate 该 ...
- Openerp开发进销存系统完毕总结
转自:http://blog.csdn.net/heartrude/article/details/9142463 安装Openoffice 在openoffice中安装openerp repor ...
- Hibernate 入门示例
版权声明:本文为博主原创文章,如需转载请标注转载地址 博客地址:http://www.cnblogs.com/caoyc/p/5593406.html 环境: myelipse2015+Hibern ...
- 【Spark】Spark的Standalone模式安装部署
Spark执行模式 Spark 有非常多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则执行在集群中,眼下能非常好的执行在 Yarn和 Mesos 中.当然 Spark 还有自带的 St ...
- 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方式其 ...
- CSS/JQuery元素选择器之&&和||,选择器的逻辑操作
使用CSS或JQuery选中元素的时候.非常多时候我们须要对条件进行&&或者||操作. JQuery或者CSS中的||操作是非经常常使用的.也非常easy,就是通过逗号来分隔的. se ...
- Intellij IDEA配置优化
1. 在线激活 安装IntelliJ IDEA 2016.1.2版本后,在联网状态下激活.Help --> Register,选择lisence server,粘贴地址http://idea.i ...
- jquery cookie操作方法
1. 设置cookie的值,把name变量的值设为value $.cookie(’name’, ‘value’); 2.新建一个cookie 包括有效期 路径 域名等 $.cookie(’n ...
- U3D Debug.DrawRay
Debug.DrawRay第二个参数方向,事实上需要手动输入长度.并且不是无限长的射线,是根据方向的长度来的 如果参数不指定颜色,绘制出来的就是白色