i send the complete code:
using
System;
using
System.Net;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Documents;
using
System.Windows.Ink;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Animation;
using
System.Windows.Shapes;
using
System.Collections.Generic;
public class ValidationScope
{
public static IList<ValidationError> GetErrors(DependencyObject obj)
{
return (IList<ValidationError>)obj.GetValue(ErrorsProperty);
}
public static void SetErrors(DependencyObject obj, IList<ValidationError> value)
{
obj.SetValue(ErrorsProperty, value);
}
// Using a DependencyProperty as the backing store for Errors. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ErrorsProperty =
DependencyProperty.RegisterAttached("Errors", typeof(IList<ValidationError>), typeof(ValidationScope), new PropertyMetadata(null, ErrorsChanged));
public static void ErrorsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
FrameworkElement element = (FrameworkElement)obj;
element.BindingValidationError +=
delegate(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
GetErrors(obj).Add(e.Error);
}
else
{
GetErrors(obj).Remove(e.Error);
}
};
}
}
Thanks a lot,
Fausto