2012-07-09 107 views
1

我遇到麻煩驗證字段。 我有一個指定的名爲Test的屬性,其代碼在 以下時發生異常,當它小於零但驗證不起作用時。 我正在使用從視圖調用的Web服務。 我想我忘了包括一些東西,但我不知道是什麼。Silverlight驗證不起作用

非常感謝。

頁:

namespace MonitorizacionIncidencias.Views 
{ 
    public partial class TESTING : Page 
    { 
     private IncidenciasServiceClient proxy = new IncidenciasServiceClient(); 

     public TESTING() 
     { 
      InitializeComponent(); 

      proxy.NextCompleted += new EventHandler<NextCompletedEventArgs>(proxy_NextCompleted); 
      proxy.NextAsync(null, 9, false); 
     }   

     void proxy_NextCompleted(object sender, NextCompletedEventArgs e) 
     { 
      DataContext = e.Result;   
     } 

    } 
} 

XAML:

<TextBox Text="{Binding TEST, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Height="23" HorizontalAlignment="Left" Margin="243,283,0,0" x:Name="textBox2" VerticalAlignment="Top" Width="120" /> 

型號:

[DataContract] 
public class Incidencia 
{ 

     [DataMember] 
     public int TEST 
     { 
      get 
      { 
       return test; 
      } 
      set 
      { 
       if (value < 0) 
        throw new Exception("TEST EXCP"); 

       test = value; 
      } 
     } 
} 
+0

+1與代碼寫清楚問題&XAML(讓生活變得如此簡單) – 2012-07-09 13:19:43

回答

0

你正在做的大部分,但你AR它實際上不會處理它生成的BindingValidationError event

例如在XAML中添加此(即適用於文本框或它的父容器):

BindingValidationError="MyBindingValidationError" 

,並把您的實際處理在這裏:

private void MyBindingValidationError(object sender, 
    ValidationErrorEventArgs e) 
{ 
    if (e.Action == ValidationErrorEventAction.Added) 
    { 
     textBox2.Background = new SolidColorBrush(Colors.Red); 

    } 
    else if (e.Action == ValidationErrorEventAction.Removed) 
    { 
     textBox2.Background = new SolidColorBrush(Colors.White); 
    } 
} 
+0

謝謝這很有用。 – MirlvsMaximvs 2012-07-13 09:46:36