Esta documentación está archivada y no tiene mantenimiento.

DataErrorValidationRule (Clase)

Actualización: noviembre 2007

Representa una regla que comprueba si la implementación de IDataErrorInfo del objeto de origen ha generado errores.

Espacio de nombres:  System.Windows.Controls
Ensamblado:  PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation

public sealed class DataErrorValidationRule : ValidationRule
public final class DataErrorValidationRule extends ValidationRule
public final class DataErrorValidationRule extends ValidationRule
<DataErrorValidationRule .../>

El modelo de enlace de datos de WPF permite asociar ValidationRules a un objeto Binding. Si el objeto de origen implementa la interfaz IDataErrorInfo, puede utilizar la regla integrada DataErrorValidationRule para comprobar si la implementación de IDataErrorInfo ha generado errores.

Una sintaxis alternativa para establecer DataErrorValidationRule explícitamente es establecer la propiedad ValidatesOnDataErrors en true en el objeto Binding o MultiBinding.

Puede crear una regla personalizada creando una clase que se derive de ValidationRule. Para obtener más información y una explicación detallada de la validación de datos, vea Información general sobre el enlace de datos.

DataErrorValidationRule aparece por primera vez en .NET Framework versión 3.5. Para obtener más información, vea Arquitectura de .NET Framework 3.5.

En este ejemplo se muestra cómo implementar la lógica de validación en un objeto personalizado y, a continuación, enlazar a este objeto.

Puede proporcionar lógica de validación en la capa de negocios si el objeto de origen implementa IDataErrorInfo, como en el ejemplo siguiente:

public class Person : IDataErrorInfo
{
    private int age;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public string Error
    {
        get
        {
            return null;
        }
    }

    public string this[string name]
    {
        get
        {
            string result = null;

            if (name == "Age")
            {
                if (this.age < 0 || this.age > 150)
                {
                    result = "Age must not be less than 0 or greater than 150.";
                }
            }
            return result;
        }
    }
}


En el ejemplo siguiente, la propiedad de texto del cuadro de texto enlaza a la propiedad Age del objeto Person, que está disponible para el enlace mediante una declaración de recurso a la que se asigna el atributo x:Keydata. DataErrorValidationRule comprueba los errores de validación provocados por la implementación de IDataErrorInfo.

<TextBox Style="{StaticResource textBoxInError}">
    <TextBox.Text>
        <!--By setting ValidatesOnExceptions to True, it checks for exceptions
        that are thrown during the update of the source property.
        An alternative syntax is to add <ExceptionValidationRule/> within
        the <Binding.ValidationRules> section.-->
        <Binding Path="Age" Source="{StaticResource data}"
                 ValidatesOnExceptions="True"
                 UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <!--DataErrorValidationRule checks for validation 
                    errors raised by the IDataErrorInfo object.-->
                <!--Alternatively, you can set ValidationOnDataErrors="True" on the Binding.-->
                <DataErrorValidationRule/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>


Como alternativa, en lugar de usar DataErrorValidationRule, puede establecer la propiedad ValidatesOnDataErrors en true.

Para obtener el ejemplo completo, vea Ejemplo Business Layer Validation.

System.Object
  System.Windows.Controls.ValidationRule
    System.Windows.Controls.DataErrorValidationRule

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5 SP1, 3.0 SP1
Mostrar: