在Silverlight中进行基本的数据验证

开发 后端
本文讲解了Silverlight 2的数据验证功能。在Silverlight 2中当我们把数据绑定到某个UI控件的时候,该数据所具有的有效性规则也自动被绑定到了该UI控件上。

Silverlight 2支持基本的数据验证功能。在Silverlight 2中,当我们把数据绑定到某个UI控件的时候,该数据所具有的有效性规则也自动被绑定到了该UI控件上。

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

比如下面的XAML代码定义了一组控件,用户通过TextBox对数据进行更新:

﹤StackPanel x:Name="dataForm"﹥
  ﹤TextBlock Text="FirstName" Width="125" FontSize="12" /﹥
  ﹤TextBox x:Name="FirstNameTextBox" IsReadOnly="False" Width="150" 
Text="{Binding FirstName, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"
BindingValidationError="FirstNameTextBox_BindingValidationError"/﹥ ﹤/StackPanel﹥

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

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

private void FirstNameTextBox_BindingValidationError(object sender, ValidationErrorEventArgs e)
{
    if (e.Action == ValidationErrorEventAction.Added)
    {
        ((Control)e.OriginalSource).Background = new SolidColorBrush(Colors.Red);
        this.Dispatcher.BeginInvoke(()=>HtmlPage.Window.Alert("The input format is invalid"));
    }
    if (e.Action == ValidationErrorEventAction.Removed)
    {
        ((Control)e.OriginalSource).Background = new SolidColorBrush(Colors.White);
    }
} 

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

【编辑推荐】

  1. 专题:一步一步学Silverlight 2
  2. Silverlight 3功能前瞻
  3. 详解Silverlight中的Downloader对象
责任编辑:佚名 来源: 博客园
相关推荐

2009-06-22 10:29:11

集成测试Spring

2010-03-30 18:48:24

Oracle 学习

2011-08-01 10:41:59

Xcode 条件编译

2021-08-27 14:36:01

主题建模BerTopic

2023-10-18 18:31:04

SQL查询数据

2023-08-02 08:02:30

Redis数据原生方法

2021-03-24 09:30:02

Jupyter not单元测试代码

2012-04-09 13:39:37

ibmdw

2011-03-22 09:45:59

IBMDB2数据库包的重绑定

2009-12-30 16:19:49

Silverlight

2024-05-06 13:34:28

WireGoogleGo

2021-08-13 13:39:29

云计算云计算环境云应用

2024-01-31 12:06:32

PostgreSQL递归函数查询

2019-04-18 09:15:05

DaskPython计算

2020-06-30 08:23:00

JavaScript开发技术

2009-12-28 13:59:12

ADO调用存储过程

2020-09-17 06:42:31

ReactStoreon前端

2023-06-19 15:38:38

JavaScripAPI

2020-03-07 18:00:17

logzeroPython日志记录

2010-01-04 16:30:06

Silverlight
点赞
收藏

51CTO技术栈公众号