Silverlight之我见——数据批示(2)
接着上一回的话题,继续来研究数据批示特性,先拿简单的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>
- int m_Age = 20;
- [Range(20, 60, 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;
- }
- }
- <TextBox x:Name="txtAge" Margin="1,1" Width="165"
- Text="{Binding Age,Mode=TwoWay,ValidatesOnExceptions=true, NotifyOnValidationError=true}"/>
- <sdk:ValidationSummary Grid.Row="3" Grid.ColumnSpan="2"/>

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

现在,总结一下方法:
1、在定义公共属性时加上对应的特性,如RangeAttribute;
2、在属性的set访问器上调用Validator的ValidateProperty方法;
3、在XAML或前台绑定时,将Binding 的Mode设置为TwoWay,ValidatesOnExceptions和NotifyOnValidationError设置为True;
4、添加ValidationSummary控件以显示错误列表,当然,不加也可以,看看下面的截图。

5、在非debug模式下运行程序。
Silverlight之我见——数据批示(2)的更多相关文章
- Silverlight之我见——数据批示(1)
第一次听到这个概念,你是否有点陌生?MSDN上也没有特意的去说明.不要看到这个名词不太熟悉,其实数据批示,玩过C#的人都会非常熟悉,所谓数据批示,其本质就是特性(Attribute),怎么样,现在有点 ...
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...
- Silverlight之我见——DataGrid数据验证
<UserControl x:Class="DataValidationSample.MainPage" xmlns="http://schemas.microso ...
- Silverlight之我见
好长时间没搞Silverlight方面的开发了,原本都以为自己早已忘记,然而前阵子(确切一点说,是挺长时间以前了)的时候,发布Windows10的时候,微软宣布新的浏览器将重新开发,关键是后半句引起了 ...
- silverlight中datagrid数据到处excel
首先新建一个DataGrdiExtensions类,代码为: public static class DataGridExtensions { /// <summary> /// 导出dg ...
- Silverlight DataGrid自适应数据
silverlight的DataGrid如果改成fill模式 那么当数据超长也不会出现横向滚动条 如果改成按单元格模式 如果数据较短又会出现空白的地方 所以我自己写了个算法 目前实现了以list为数据 ...
- Silverlight保存大数据到WCF出现Not Found问题
Silveright调用WCF保存大数据时,直接在客户端报“ 远程服务器返回了错误:Not Found ”问题,少量是没问题,如下图: 后面在这个文章中找到解决办法: http://www.cnblo ...
- silverlight,动态数据集合中,移除动态集合自身的内容
在xaml的页面上创建一个x:Name为_list1的ListBox,其中ListBox里面的每一项是ListBoxItem if (_list1.SelectedItem == null)//如果_ ...
- silverlight中DataGrid数据高亮显示
效果如图所示, <UserControl xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.W ...
随机推荐
- FileZilla文件下载的目录
连接上ftp服务器之后,在remote site那边邮件选中了目录下载文件,但是下载完成之后. 不知道下载到哪里了,用search everything软件搜了一下,发现就在D盘的根目录. 所以,下载 ...
- 洛谷[USACO06JAN]把牛Corral the Cows
题目描述 约翰打算建一个围栏来圈养他的奶牛.作为最挑剔的兽类,奶牛们要求这个围栏必须是正方 形的,而且围栏里至少要有C< 500)个草场,来供应她们的午餐. 约翰的土地上共有C<=N< ...
- 杂项:E-Learning
ylbtech-杂项:E-Learning 1.返回顶部 1. E-Learning:英文全称为(Electronic Learning),中文译作“数字(化)学习”.“电子(化)学习”.“网络(化) ...
- bzoj2179
fft裸题 我还没有背下来fft #include<bits/stdc++.h> #define pi acos(-1) using namespace std; ; int n, m, ...
- 2-1 创建第一个Vue实例
https://cn.vuejs.org/ 生产版本是经过压缩后的版本,它里面把一些没用的警告的代码删除掉了所以它会更精悍一些. 直接引入CDN的网址我们就可以使用Vuejs了.使用生产版本或者CDN ...
- BZOJ 3514 LCT+主席树
思路: //By SiriusRen #include <bits/stdc++.h> using namespace std; ; ],fa[N],minn[N],rev[N],q[N] ...
- Linux添加用户组和删除用户组
1.添加用户组使用groupadd命令添加用户组:groupadd group_name此操作需由系统管理员进行.2.删除用户组使用groupdel命令删除用户组:groupdel group_nam ...
- Android 6.0一个完整的native service
上一篇博客<Android 6.0 如何添加完整的系统服务(app-framework-kernel)>http://www.cnblogs.com/hackfun/p/7418902. ...
- servlet-请求重定向
package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.ser ...
- Java编译器、JVM、解释器
Java虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行.本文首先简要介绍从Java文件的编译 ...