1

フィールドの検証で問題が発生しています。0 未満の場合に例外をスローするコードで 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 に答える