Silverlight 2數據驗證功能實現方法介紹
Silverlight從出現至今,已經推出了許多版本。每一個新版本的出現都會為程序員們帶來一些新的功能體驗。比如,Silverlight 2數據驗證就是一項比較新的支持功能。在Silverlight 2中,當我們把數據綁定到某個UI控件的時候,該數據所具有的有效性規則也自動被綁定到了該UI控件上。#t#
比如某個數據字段被設置為整數型,當我們用非整數型數據對該字段進行更新的時候就會發生錯誤。我們就可以利用這個規則在UI中對輸入數據進行驗證。要做到這點,我們只要設置兩個XAML屬性,并在所定義的事件中實現我們所期望的UI行為就可以了。
比如如下的XAML代碼定義了一組控件,用戶通過TextBox對數據進行更新體驗Silverlight 2數據驗證的功能:
- view plaincopy to clipboardprint?
- < 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>
- < 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, Validates
OnExceptions=true}" BindingValidationError=
"FirstNameTextBox_BindingValidationError"/> - < /StackPanel>
當NotifyOnValidationError和ValidatesOnExceptions這兩個屬性都設置為true的時候,Silverlight就會在對輸入數據驗證所綁定的規則發生錯誤的時候觸發BindingValidationError事件,這樣我們就會在Silverlight 2數據驗證中發生錯誤時得到通知。
接下來我們要做的就是實現事件觸發時的行為,也就是我們期望的UI行為。如:
- view plaincopy to clipboardprint?
- private void FirstNameTextBox_Binding
ValidationError(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);- }
- }
- private void FirstNameTextBox_BindingValidation
Error(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);- }
- }
在上面這段Silverlight 2數據驗證代碼中,當錯誤發生時,控件(這里是TextBox)的背景色就會變成紅色,并利用HTML頁面的警告窗口給用戶提示信息。而當錯誤被更正時,空間就會還原到默認的白色。