Silverlight验证不起作用

时间:2012-07-09 08:26:12

标签: silverlight validation

我在验证某个领域时遇到了麻烦。 我有一个名为Test的属性,其中包含抛出的代码 小于零时的异常,但验证不起作用。 我正在使用从视图调用的Web服务。 我想我忘了包含一些东西,但我不知道是什么。

谢谢你。

网页:

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;
            }
        }
}

1 个答案:

答案 0 :(得分:0)

你正在做大部分工作,但实际上并没有处理它产生的BindingValidationError event

<强> e.g。将此添加到您的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);
    }
}