WPF – ValidationRule (Rules?)
5:40 | Author: Unknown

Spi Se está charlando mucho de (la asunción de Obama, la guerra en Medio Oriente, la crisis de la economía?) no,  del artículo “2009 CWE/SANS Top 25 Most Dangerous Programming Errors”, como su nombre lo indica intenta sumarizar los 25 errores más peligrosos a la hora de programar. Hay una síntesis muy interesante en éste post realizada por Jeff Atwood en su muy buen blog Coding Horror.
Lo que me interesa es, dado que estoy viendo las distintas tecnologías de presentación, como se puede implementar en WPF el primero de los puntos. Improper Input Validation.
Existe en WPF una clase base abstracta llamada ValidationRule. Verifiquemos si el título del post tiene sentido. ValidationRule, Rules?

Un ejemplo de implementación de los miembros de la clase (MandatoryValidationRule es una clase que verifica que el valor no sea nulo o un string vacío)

public class MandatoryValidationRule : ValidationRule
{
public override ValidationResult
Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
return
String.IsNullOrEmpty((string)value) ?
new ValidationResult(false, "Value is Mandatory") : new ValidationResult(true, null);
}
}



Un ejemplo de uso de la clase en el XAML (simlpemente bindeamos (neologismo ampliamente aceptado) la ValidationRule)



 <TextBox Name="textBox1"Width="50"FontSize="15"

   
Validation.ErrorTemplate="{StaticResource validationTemplate}"

   
Style="{StaticResource textBoxInError}"

   
Grid.Row="1"Grid.Column="1"Margin="2">

    <
TextBox.Text>

        <
Binding Path="Name"

       
UpdateSourceTrigger="PropertyChanged" >

            <
Binding.ValidationRules>

                <
c:MandatoryValidationRule/>

            </
Binding.ValidationRules>

        </
Binding>

    </
TextBox.Text>

</
TextBox>



Por lo visto no es tan complejo y al estar utilizado directamente en el lenguaje declarativo podemos tener muchas posibilidades de manejo de estilos, recusos, templates, etc.

No se si concluir que es una buena forma o no de validar, sin embargo podemos ver un buen post de Josh Smith que nos puede dar un poco más de elementos para juzgar.



 





This entry was posted on 5:40 and is filed under , , . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.