none
Validar Cuadros de texto en wpf y silverligth RRS feed

  • Pregunta

  • Hola e buscado por todo internet y no logro encontrar una manera de poder validar cuadros de texto en silverlight y wpf algo simple de manera sencilla porfavor  no soy muy experto en esto, pero quiero poder validar mis datos de entrada, que cuando escriba algo en mis cuadros de texto ya sea que pueda solo aceptar numeros o solo aceptar letras que lo pueda validar, y mandar un mensaje que diga que ese tipo de dato es incorrecto para asi poder devolver el focus al textbox que yo necesito  e investigado que se puede hacer de varias formas pero no logro poder hacerlo por favor si alguien lo sabe hacer solicito su apreciable ayuda ustedes son los expertos ya no se donde buscar mas desde ya muchas gracias.
    domingo, 14 de octubre de 2012 7:45

Todas las respuestas

  • Hola,

    Hay varias formas de hacerlo, algunas bastante diferentes entre sí, dependiendo si sigues el patron MVVM y utilizas bindings... etc. Si nos indicas cómo estás intentado hacerlo y qué es lo que no te funciona, y concretas más tu pregunta, será más facil ayudarte.

    Un saludo.

    lunes, 15 de octubre de 2012 15:54
  • Si muchisimas gracias aZUBI intente hacerlo como se muestra en este video http://www.youtube.com/watch?feature=player_embedded&v=qJ4BL3-cqz4 pero no me sirve por que no puedo enviar un mensaje y no puedo validar numeros o letras al probarlo no importa si dejo espacios en blanco lo toma como letras y no tengo manera de hacerlo para que solo se permitan solo numeros o letras ahora eso por el lado de silverlight pero como lo hago en wpf?
    martes, 16 de octubre de 2012 2:38
  • Y si es que hay otras formas de hacerlo podrias orientarme por favor te lo agradezco muchisimo
    martes, 16 de octubre de 2012 2:38
  • Creo que el vídeo explica bastante bien cómo hacerlo. La única diferencia en tu caso sería la clase Validación. En vez de definir los strings Nombre y Apellido deberás definir tus propiedades, y realizar la validación correspondiente en sus setters.
    martes, 16 de octubre de 2012 7:33
  • deberías implementar la interfaz IdataErrorInfo utilizando el modelo MVVM tendrás acceso alas validaciones de manera mas natural, de esta manera la clase determina si tiene los datos correctos o no acá te añado una clase con la interfaz implementada y con las validaciones para la clase

    public partial class Parametro : IDataErrorInfo
    {
    	#region Implementacion de miembros de la interfaz IDataErrorInfo
    	string IDataErrorInfo.Error { get { return null; } }
    
    	string IDataErrorInfo.this[string propertyName]
    	{
    		get { return GetValidationError(propertyName); }
    	}
    	#endregion
    
    	#region Validaciones esta region esta enlazada a la implementacion de IDataErrorInfo
    	/// <summary>
    	/// arreglo que contiene las propiedades a validar para la clase 
    	/// </summary>
    	static readonly string[] ValidatedProperties = 
    	{
    		"IdParametro","Valor","Descripcion"
    	};
    	/// <summary>
    	/// Obtiene el mensaje de validacion
    	/// </summary>
    	/// <param name="propertyName">Nombre de la propiedad a Validar</param>
    	/// <returns>mensaje de validacion si esta validado retorna null</returns>
    	string GetValidationError(string propertyName)
    	{
    		if (Array.IndexOf(ValidatedProperties, propertyName) < 0)
    			return null;
    		string error = null;
    		switch (propertyName)
    		{
    			case "IdParametro":
    				error = ValidarIdParametro();
    				break;
    			case "Valor":
    				error = ValidarValor();
    				break;
    			case "Descripcion":
    				error = ValidarDescripcion();
    				break;
    			default:
    				Debug.Fail("Validacion de Propiedad no Esperada para Tipo: " + propertyName);
    				break;
    		}
    		return error;
    	}
    
    	/// <summary>
    	/// valida el campo IdParametro
    	/// </summary>
    	/// <returns>Mensaje de la validacion si es validada correctamente devuelve null</returns>
    	string ValidarIdParametro()
    	{
    		// agregar la validacion de la propiedad IdParametro aqui debe devolver el mensaje
    		// return "error";
    		return null;
    	}
    	/// <summary>
    	/// valida el campo Valor
    	/// </summary>
    	/// <returns>Mensaje de la validacion si es validada correctamente devuelve null</returns>
    	string ValidarValor()
    	{
    		// agregar la validacion de la propiedad Valor aqui debe devolver el mensaje
    		// return "error";
    		return null;
    	}
    	/// <summary>
    	/// valida el campo Descripcion
    	/// </summary>
    	/// <returns>Mensaje de la validacion si es validada correctamente devuelve null</returns>
    	string ValidarDescripcion()
    	{
    		// agregar la validacion de la propiedad Descripcion aqui debe devolver el mensaje
    		// return "error";
    		return null;
    	}
    	/// <summary>
    	/// Devuelve true si la clase Parametro no tiene errores de validación.
    	/// </summary>
    	public bool EsValido
    	{
    		get { return ValidatedProperties.All(property => GetValidationError(property) == null); }
    	}
    	#endregion
    }

    viernes, 19 de octubre de 2012 14:57