提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2011-01-12 14:44:03.000|阅读 750 次
概述:众所周知,在ASP.NET应用程序中,我们可以使用验证控件进行数据输入的验证,遗憾的是在Silverlight中并没有提供任何验证控件,但Silverlight对于双向数据绑定还是提供了一些基本的数据验证支持,我们可以在set设置器中定义验证规则,并对于不合法数据抛出异常,最后通过捕获验证错误事件来实现数据的验证。 本文将介绍在Silverlight应用程序中如何进行数据验证。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
众所周知,在ASP.NET应用程序中,我们可以使用验证控件进行数据输入的验证,遗憾的是在Silverlight中并没有提供任何验证控件,但Silverlight对于双向数据绑定还是提供了一些基本的数据验证支持,我们可以在set设置器中定义验证规则,并对于不合法数据抛出异常,最后通过捕获验证错误事件来实现数据的验证。
本文将介绍在Silverlight应用程序中如何进行数据验证。
准备知识
Silverlight中如下两种情况下,将会触发验证错误:
1.在绑定引擎中执行数据转换时抛出异常
2.在业务实体的set设置器中抛出异常
为了在验证出错时能够接收到通知,我们必须要在绑定对象上设置如下两个属性为true:
ValidatesOnExceptions:告诉绑定引擎当有异常发生时创建一个验证异常
NotifyOnValidationError:告诉绑定引擎当有验证错误发生或者错误排除时触发BindingValidationError事件
这两个属性都定义在Binding类中,如下代码所示:
BindingValidationError事件定义在FrameworkElement中,通过它可以接收到ValidationErrorEventArgs类型的参数,而在ValidationErrorEventArgs中定义了一个很重要的属性Action,它的定义如下:
这里Added表示新增一个验证异常,Removed表示排除了一个验证异常。下面通过一个实例我们看一下如何使用它们进行数据的验证。
实例
首先我们编写一个简单的业务类,由于数据绑定验证只能在双向绑定中,所以这里需要实现INotifyPropertyChanged接口,如下代码所示,在set设置器中我们对于数据的合法性进行检查,如果不合法则抛出一个异常:
/// <summary>
/// Author:TerryLee
/// //www.cnblogs.com/Terrylee
/// </summary>
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _age;
public int Age
{
get { return _age; }
set {
if (value < 0)
throw new Exception( "年龄输入不合法!");
_age = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs( "Age"));
}
}
}
private String _name = "Terry";
public String Name
{
get { return _name; }
set {
if (value.Length < 4)
throw new Exception( "姓名输入不合法!");
_name = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs( "Name"));
}
}
}
public void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
编写数据绑定,如下代码所示,设置NotifyOnValidationError和ValidatesOnExceptions属性为true,并且定义BindingValidationError事件:
<!--
//www.cnblogs.com/Terrylee
-->
<StackPanel Orientation="Horizontal" Margin="10">
<TextBox x:Name="txtName" Width="200" Height="30"
Text= "{Binding Name,Mode=TwoWay,
NotifyOnValidationError=true,
ValidatesOnExceptions=true} "
BindingValidationError= "txtName_BindingValidationError">
</TextBox>
<my:Message x:Name="messageName"></my:Message>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="10">
<TextBox x:Name="txtAge" Width="200" Height="30"
Text= "{Binding Age,Mode=TwoWay,
NotifyOnValidationError=true,
ValidatesOnExceptions=true} "
BindingValidationError= "txtAge_BindingValidationError">
</TextBox>
<my:Message x:Name="messageAge"></my:Message>
</StackPanel>实现BindingValidationError事件,在这里可以根据ValidationErrorEventAction来判断如何进行处理,在界面给出相关的提示信息等,如下代码所示:
/// <summary>
/// Author:TerryLee
/// //www.cnblogs.com/Terrylee
/// </summary>
void txtAge_BindingValidationError(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
messageAge.Text = e.Error.Exception.Message;
messageAge.Validation = false;
}
else if (e.Action == ValidationErrorEventAction.Removed)
{
messageAge.Text = "年龄验证成功";
messageAge.Validation = true;
}
}
好了,现在来看一下最后的验证效果,如下图所示:
通过这样的方式,我们就可以在Silverlight中对于数据输入做验证了。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢