- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《深入浅出WPF》笔记——绑定篇.doc
一、Bindi?ng对数据?的校验与转?化
在上一篇中?有提到过绑?定像是一座?桥梁,在桥梁两端?要有源和目?标以及在桥?梁上面我们?可以设立关?卡对数据进?行验证,除此之外,源提供的数?据有时不一?定是目标想?要的类型,但是可以通?过转化成为?目标需要的?类型。
1.1Bind?ing的数?据验证
在软件设计?过程中,数据的验证?是经常要实?现的。要实现Bi?nding?的数据验证?,主要通过B?indin?g的Val?idati?onRol?es属性来?实现。下面让我们?认识一下V?alida?tionR?oles(验证条件):可以看到V?alida?tionR?oles是?复数形式,应该可以想?到他是一个?Colle?ction?Valid?ation?Role类型的的属?性,而Vali?datio?nRole?是一个抽象?类,所以我们要?向验证条件?集合里面添?加的应该是?继承自Va?lidat?ionRo?le的一个?实例,既然要继承?抽象类,那么就要实?现Vali?date方?法,其形式为p?ublic? abstr?act Valid?ation?Resul?t Valid?ate(objec?t value?, Cultu?reInf?o cultu?reInf?o),其中Val?ue是要验?证的值,cultu?reInf?o暂不用理?会,方法的返回?值为Val?idati?onRes?ult类型?的,Valid?ate具有?两个形参(一个是否通?过验证,一个是错误?信息)。为什么验证?条件要用集?合类型的呢??这是因为在?一个绑定中?可以有一个?源,每一个源可?以有很多属?性,而且一个绑?定可以对应?多个目标。所以就可能?有多个验证?(由于上面文?字涉及的变?量比较多,建议在VS?上面转到定?义上,好好理解一?下)。我们暂且还?拿Text?Box文本?框与Sli?der控件?的相互绑定?为例吧!现在的需求?是想让用户?在滑动Sl?ider和?填写Tex?tBox时?,http://qianm?ing.qqq23?.com 验证滑动范?围和填写数?字范围在0?-100之间?,如果不是在?这个范围里?,就提示输入?数字不合理?,且文本框的?边框显示红?色。
?A、实现Val?idate?方法代码
Range?Valid?ation?Rule.cs
using? Syste?m;
using? Syste?m.Colle?ction?s.Gener?ic;
using? Syste?m.Linq;
using? Syste?m.Text;
using? Syste?m.Windo?ws.Contr?ols;
names?pace Commo?nLib
{
publi?c class? Range?Valid?ation?Rule : Valid?ation?Rule
{
publi?c overr?ide Valid?ation?Resul?t Valid?ate(objec?t value?, Syste?m.Globa?lizat?ion.Cultu?reInf?o cultu?reInf?o)
{
doubl?e d = 0;
if (doubl?e.TryPa?rse(value?.ToStr?ing(), out d))
{
if (d = 0 d = 80)
{
retur?n new Valid?ation?Resul?t(true, null);
}
}
retur?n new Valid?ation?Resul?t(false?,输入数字不?合理!!);
}
}
B、XAML代?码
View Code
Windo?w x:Class?=Bindi?ngOfV?alid.MainW?indow?
xmlns?=http://schem?as.micro?/winfx?/2006/xaml/prese?ntati?on
xmlns?:x=http://schem?as.micro?/winfx?/2006/xaml
Title?=MainW?indow? Heigh?t=200 Width?=300
Stack?Panel?
TextB?ox x:Name=textb?ox1 Margi?n=5
文档评论(0)