1

我在验证字段时遇到了麻烦。我指定了一个名为 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;
            }
        }
}
4

1 回答 1

0

您正在做大部分工作,但实际上并没有处理它生成的BindingValidationError 事件。

例如,在您的 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);
    }
}
于 2012-07-09T13:15:57.030 回答