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 表单验证 - 必填字段
-------------------------------------------------------------------------- 本节展示如何制作必填输入字段,并创建需要时所用的错 ...
随机推荐
- jQuery实现滚动栏一直处于最底部
相信大家有时候在展示一些实时数据展示并且数据量非常大的时候,由于无法在同一页面看到最有效的数据,所以我们须要将滚动栏至于底部.以便我们看到最须要的数据和信息.这里非常明显的样例那拿windows的pi ...
- Android 6.0 超级简单的权限申请 (Permission)
代码地址如下:http://www.demodashi.com/demo/13369.html 背景描述 随着Android系统的不断升级,谷歌对用户的隐私是越来越注重了,给我们开发者带来了更多的繁琐 ...
- (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹
1 - 基础,浏览一个文件夹 我们知道,在win32中是以外壳名字空间的形式来组织文件系统的,在外壳名字空间里的每一个对象(注)都实现了一个IShellFolder的接口,通过这个接口我们可以直接查询 ...
- form表单中的id 与name的区别
以前经常写form表单时,不写id和name,总觉得没有什么用.后来一看后台套完的页面发现,他们都补上name,不知道所以然,就查了一下资料,吓我一跳,要是照我那样写根本不会有数据传到服务器.原来表单 ...
- sql server中Join有几种
JOIN: 如果表中有至少一个匹配,则返回行 (也就是 inner join)LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有 ...
- Mysql各种类型字段长度
1.数值类型 列类型 需要的存储量 TINYINT 1 字节 SMALLINT 2 个字节 MEDIUMINT 3 个字节 INT 4 个字节 INTEGER 4 个字节 BIGINT 8 个字节 F ...
- WebSocket遇到的一些问题
一 .Nginx配置websocket 为了解决Nginx转发不能进行websocket通信问题 将nginx配置文件添加如下内容: map $http_upgrade $connection ...
- scut协议配置工具初始化的一些问题
1.如果点击协议配置工具左上角的项目按钮没反应,说明数据库没有正确配置. 2.数据库创建脚本运行如果乱码,把utf-8改成ansi 3.如果ContractDB不存在就自行创建数据库. 4.使用sql ...
- 213. String Compression【easy】
Implement a method to perform basic string compression using the counts of repeated characters. For ...
- makefile之call函数
call函数是唯一一个可以创建定制化参数函数的引用函数. 支持对自定义函数的引用; 支持将一个变量定义为一个复杂的表达式,用call函数根据不同的参数对它进行展开来获取不同的结果; 函数语法: $(c ...