Cómo: Implementar lógica de validación en objetos personalizados
Actualización: noviembre 2007
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.
Ejemplo
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.
Vea también
Tareas
Cómo: Implementar la validación de enlaces