Silverlight之我见——数据批示(2)

Silverlight之我见——数据批示(2),第1张

概述 接着上一回的话题,继续来研究数据批示特性,先拿简单的RageAttribute来弄弄,接着上次的示例,添加一个Age属性,并加上RangeAttribute。 [Range(20,60,ErrorMessage="年龄范围在20与60之间。")] [Display(Name="年龄",Description="歌手年龄。")] public i

 接着上一回的话题,继续来研究数据批示特性,先拿简单的RageAttribute来弄弄,接着上次的示例,添加一个Age属性,并加上RangeAttribute。

        [Range(20,60,ErrorMessage="年龄范围在20与60之间。")]        [display(name="年龄",Description="歌手年龄。")]        public int Age { get; set; }  


接着把XAML也补完整。

 

        <sdk:Label x:name="lbAge" Target="{Binding Elementname=txtAge}" GrID.Column="0"                 GrID.Row="2" FontSize="14" margin="1,1,20,1"/>        <StackPanel GrID.Column="1" GrID.Row="2" OrIEntation="Horizontal">            <TextBox x:name="txtAge" margin="1,1" WIDth="165"                     Text="{Binding Age}"/>            <sdk:DescriptionVIEwer Target="{Binding Elementname=txtAge}"/>        </StackPanel>


 

是不是可以了呢? 运行一下,定义的范围在20-60,现在输入100,然后把焦点文本框移走,结果发现,没有发生验证。   好,简单的不行,继续探索,把属性的定义改成这样:
        int m_Age = 20;        [Range(20,ErrorMessage = "年龄范围在20与60之间。")]        [display(name = "年龄",Description = "歌手年龄。")]        public int Age        {            get { return this.m_Age; }            set            {                ValIDator.ValIDateProperty(value,new ValIDationContext(this,null,null) { Membername = "Age" });                this.m_Age = value;            }        }


 

然后再次运行,哟,上帝!还是不行,怎么了?ValIDator的验证方法也调用了,为什么还不行呢? 不要气馁,继续,还记得在XAML中写的绑定扩展标记不?想起来了吗? 1、默认是单向绑定Mode = Oneway; 2、没有显式设置启用验证。 嗯,这下明白了,再改改  
<TextBox x:name="txtAge" margin="1,1" WIDth="165"                     Text="{Binding Age,Mode=TwoWay,ValIDatesOnExceptions=true,NotifyOnValIDationError=true}"/>

再运行,这回验证了,但是,抛出了异常。那有没有办法不抛出异常而显示友好的错误提示呢?答案当然有,使用ValIDationSummary  
<sdk:ValIDationSummary GrID.Row="3" GrID.ColumnSpan="2"/> 

再次按下F5,验证失败后仍然抛出异常,这时候,你可能有些失望。

 

山重水复疑无路,柳暗花明会成功,这时候,你在项目上右击,选择“在浏览器中查看”,啊,眼前一亮,出来了。

 

现在,总结一下方法:

1、在定义公共属性时加上对应的特性,如RangeAttribute;

2、在属性的set访问器上调用ValIDator的ValIDateProperty方法;

3、在XAML或前台绑定时,将Binding 的Mode设置为TwoWay,ValIDatesOnExceptions和NotifyOnValIDationError设置为True;

4、添加ValIDationSummary控件以显示错误列表,当然,不加也可以,看看下面的截图。

 

 

5、在非deBUG模式下运行程序。

总结

以上是内存溢出为你收集整理的Silverlight之我见——数据批示(2)全部内容,希望文章能够帮你解决Silverlight之我见——数据批示(2)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存