在Silverlight中進(jìn)行基本的數(shù)據(jù)驗(yàn)證
Silverlight 2支持基本的數(shù)據(jù)驗(yàn)證功能。在Silverlight 2中,當(dāng)我們把數(shù)據(jù)綁定到某個(gè)UI控件的時(shí)候,該數(shù)據(jù)所具有的有效性規(guī)則也自動(dòng)被綁定到了該UI控件上。
比如某個(gè)數(shù)據(jù)字段被設(shè)置為整數(shù)型,當(dāng)我們用非整數(shù)型數(shù)據(jù)對該字段進(jìn)行更新的時(shí)候就會發(fā)生錯(cuò)誤。我們就可以利用這個(gè)規(guī)則在UI中對輸入數(shù)據(jù)進(jìn)行驗(yàn)證。要做到這點(diǎn),我們只要設(shè)置兩個(gè)XAML屬性,并在所定義的事件中實(shí)現(xiàn)我們所期望的UI行為就可以了。
比如下面的XAML代碼定義了一組控件,用戶通過TextBox對數(shù)據(jù)進(jìn)行更新:
﹤StackPanel x:Name="dataForm"﹥ ﹤TextBlock Text="FirstName" Width="125" FontSize="12" /﹥ ﹤TextBox x:Name="FirstNameTextBox" IsReadOnly="False" Width="150" |
當(dāng)NotifyOnValidationError和ValidatesOnExceptions這兩個(gè)屬性都設(shè)置為true的時(shí)候,Silverlight就會在對輸入數(shù)據(jù)驗(yàn)證所綁定的規(guī)則發(fā)生錯(cuò)誤的時(shí)候觸發(fā)BindingValidationError事件,這樣我們就會在驗(yàn)證發(fā)生錯(cuò)誤時(shí)得到通知。
接下來我們要做的就是實(shí)現(xiàn)事件觸發(fā)時(shí)的行為,也就是我們期望的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); } } |
在上面這段代碼中,當(dāng)錯(cuò)誤發(fā)生時(shí),控件(這里是TextBox)的背景色就會變成紅色,并利用HTML頁面的警告窗口給用戶提示信息。而當(dāng)錯(cuò)誤被更正時(shí),空間就會還原到默認(rèn)的白色。
【編輯推薦】