Silverlight 2数据验证功能实现方法介绍
创始人
2024-06-19 05:51:11
0

Silverlight从出现至今,已经推出了许多版本。每一个新版本的出现都会为程序员们带来一些新的功能体验。比如,Silverlight 2数据验证就是一项比较新的支持功能。在Silverlight 2中,当我们把数据绑定到某个UI控件的时候,该数据所具有的有效性规则也自动被绑定到了该UI控件上。#t#

比如某个数据字段被设置为整数型,当我们用非整数型数据对该字段进行更新的时候就会发生错误。我们就可以利用这个规则在UI中对输入数据进行验证。要做到这点,我们只要设置两个XAML属性,并在所定义的事件中实现我们所期望的UI行为就可以了。

比如如下的XAML代码定义了一组控件,用户通过TextBox对数据进行更新体验Silverlight 2数据验证的功能:

 

  1. view plaincopy to clipboardprint?  
  2. < StackPanel x:Name="dataForm">   
  3. < TextBlock Text="FirstName" Width="125" 
    FontSize="12" />   
  4. < TextBox x:Name="FirstNameTextBox" 
    IsReadOnly="False" Width="150" 
    Text="{Binding FirstName, Mode=TwoWay, 
    NotifyOnValidationError=true, 
    ValidatesOnExceptions=true}"
     
    BindingValidationError="FirstNameTextBox_
    BindingValidationError"
    />   
  5. < /StackPanel>   
  6. < StackPanel x:Name="dataForm"> 
  7. < TextBlock Text="FirstName" Width="125" 
    FontSize="12" /> 
  8. < TextBox x:Name="FirstNameTextBox" 
    IsReadOnly="False" Width="150" 
    Text="{Binding FirstName, Mode=TwoWay, 
    NotifyOnValidationError=true, Validates
    OnExceptions=true}"
     BindingValidationError=
    "FirstNameTextBox_BindingValidationError"/> 
  9. < /StackPanel>  

 

当NotifyOnValidationError和ValidatesOnExceptions这两个属性都设置为true的时候,Silverlight就会在对输入数据验证所绑定的规则发生错误的时候触发BindingValidationError事件,这样我们就会在Silverlight 2数据验证中发生错误时得到通知。

接下来我们要做的就是实现事件触发时的行为,也就是我们期望的UI行为。如:

 

  1. view plaincopy to clipboardprint?  
  2. private void FirstNameTextBox_Binding
    ValidationError(object sender, 
    ValidationErrorEventArgs e)   
  3. {   
  4. if (e.Action == ValidationErrorEventAction.Added)   
  5. {   
  6. ((Control)e.OriginalSource).Background = 
    new SolidColorBrush(Colors.Red);   
  7. this.Dispatcher.BeginInvoke(()=>HtmlPage.
    Window.Alert("The input format is invalid"));   
  8. }   
  9. if (e.Action == ValidationErrorEventAction.Removed)   
  10. {   
  11. ((Control)e.OriginalSource).Background = 
    new SolidColorBrush(Colors.White);   
  12. }   
  13. }   
  14. private void FirstNameTextBox_BindingValidation
    Error(object sender, ValidationErrorEventArgs e)  
  15. {  
  16. if (e.Action == ValidationErrorEventAction.Added)  
  17. {  
  18. ((Control)e.OriginalSource).Background = 
    new SolidColorBrush(Colors.Red);  
  19. this.Dispatcher.BeginInvoke(()=>HtmlPage.
    Window.Alert("The input format is invalid"));  
  20. }  
  21. if (e.Action == ValidationErrorEventAction.Removed)  
  22. {  
  23. ((Control)e.OriginalSource).Background = 
    new SolidColorBrush(Colors.White);  
  24. }  
  25. }  

 

在上面这段Silverlight 2数据验证代码中,当错误发生时,控件(这里是TextBox)的背景色就会变成红色,并利用HTML页面的警告窗口给用户提示信息。而当错误被更正时,空间就会还原到默认的白色。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...