Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESCRITORIO
UNIDAD Nº 3
www.iplacex.cl
SEMANA 5
Introducción
Las aplicaciones permiten a los usuarios ingresan datos dentro de los
formularios. Esta información requerida a completar pueden ser datos
obligatorios, tener algún formato en concreto, un largo mínimo o que solo se
puedan ingresar un cierto tipo de caracteres. Gran parte de las veces, estos
criterios de validación estarán dados por las reglas de negocio. Estas son
validaciones que deben ser cumplidas para que los datos ingresados en los
formularios puedan ser almacenados de manera correcta dentro de las
bases de datos.
www.iplacex.cl2
Ideas Fuerza
• Binding: técnica de programación que permite vincular
propiedades de una clase a los controles de la interfaz de usuario
• Modelo: clase principal, que contendrá las propiedades que
posteriormente serán validadas
• Reglas de negocio: criterios que un usuario debe cumplir para el
correcto almacenamiento de datos. Son especificados por el
cliente, aunque hay algunos que son integrados de forma natural
en una aplicación.
www.iplacex.cl3
Desarrollo
Fuente: www.iplacex.cl
www.iplacex.cl4
representación y facilitador de la implementación de la base de datos y las
estructuras que la componen. Estas estructuras fueron las vistas,
procedimientos almacenados y funciones.
Fuente: www.iplacex.cl
www.iplacex.cl5
2. Binding
Esto permite generar validaciones en tiempo real para las propiedades que
estén asociados a los controles de la interfaz de usuario.
www.iplacex.cl6
Imagen 3: Definición de DataContext a nivel de clase
Fuente: www.iplacex.cl
www.iplacex.cl7
Imagen 4: Definición de DataContext a nivel de XAML
Fuente: www.iplacex.cl
www.iplacex.cl8
Imagen 5: Estructura formulario de registro de Producto
Fuente: www.iplacex.cl
Fuente: www.iplacex.cl
www.iplacex.cl9
Control Propiedad Ejemplo
CheckBox IsChecked IsChecked=”{Binding EsCasado}”
ComboBox ItemSource ItemSource=”{Binding CategoriaCollection}”
SelectedItem SelectedItem=”{Binding Categoria}”
Label Content Content=”{Binding Username}”
TextBox Text Text=”{Binding Username}”
www.iplacex.cl10
3. Reglas de negocio
Una regla de negocio es una condición que debe ser cumplida para
satisfacer un cierto requerimiento. En esta ocasión, el ingreso o formato de
un dato dentro de un formulario.
www.iplacex.cl11
Imagen 7: Validación a nivel de base de datos en SQL Server
Fuente: www.iplacex.cl
www.iplacex.cl12
• A nivel de clase en el método set de las propiedades que la
compongan
Fuente: www.iplacex.cl
Fuente: www.iplacex.cl
www.iplacex.cl13
4. Formas de validación implementables en WPF
Fuente: www.iplacex.cl
Algo importante a destacar del método boolean visto, es que utiliza una
clase llamada CallerMemberName. Esta implementa un concepto
www.iplacex.cl14
denominado reflexión (reflection). Este tipo de programación permite crear,
entre otras cosas, generar que el compilador detecte de forma automática
el nombre de la propiedad que deberá ser validada por este método, sin
siquiera especificar el nombre de la propiedad como parámetro de entrada.
Fuente: www.iplacex.cl
www.iplacex.cl15
Imagen 13: Estructura de clase Producto
Fuente: www.iplacex.cl
www.iplacex.cl16
Imagen 14: Estructura de clase Producto con implementación de clase
ObservableObject
Fuente: www.iplacex.cl
www.iplacex.cl17
Si te fijas, para las propiedades de Nombre, Precio y Cantidad, en los
métodos setter de estas, se ejecuta el método OnPropertyChanged(),
pasando como parámetros de entrada: la referencia al atributo privado de
cada propiedad y su valor. Esto es el punta pie inicial al momento de generar
las validaciones en base a las reglas de negocio.
Antes de poder continuar con los distintos caminos para lograr las
validaciones, se creará un recurso de forma global dentro de la aplicación
de escritorio. Este, modificará aspectos visuales de los controles de tipo
TextBox y también mostrará el error en la validación de los campos para
algunos casos de validaciones.
Fuente: www.iplacex.cl
www.iplacex.cl18
Esta plantilla, mostrará por medio de un control de tipo TextBlock, el
mensaje de error según el criterio de validación que fue arrojado utilizando
Binding en la propiedad Text de los controles de tipo textbox.
IMPLEMENTACIÓN
a. Exception
Fuente: www.iplacex.cl
www.iplacex.cl19
para atrapar las excepciones que se generen y que puedan ser
mostradas por medio de un MessageBox.
Fuente: www.iplacex.cl
El valor del primero será True y le indicará al campo de texto que debe
validar en base a las excepciones que se vayan ejecutando, y el de
segundo será PropertyChanged, que establecerá que la fuente de
datos, es decir, la propiedad proveniente desde la clase deba ser
actualizada cada vez que el usuario modifique el valor del control, por
www.iplacex.cl20
ejemplo, al ingresar nuevo carácter en una caja de texto o seleccione
una opción desde un combobox.
Fuente: www.iplacex.cl
Fuente: www.iplacex.cl
www.iplacex.cl21
b. IDataErrorInfo
www.iplacex.cl22
Imagen 20: Implementación de propiedad this[string name] de
IDataErrorInfo dentro de clase Producto
Fuente: www.iplacex.cl
www.iplacex.cl23
Adicionalmente, para poder capturar estas validaciones y así
mostrarlas al usuario, se puede implementar una estructura
denominada Dictionary.
Fuente: www.iplacex.cl
Fuente: www.iplacex.cl
www.iplacex.cl24
A nivel de interfaz de usuario, al contrario de las validaciones de tipo
Exception que se implementaba ValidatesOnExceptions, aquí se
utilizará ValidatesOnDataErrors, que tendrá true como valor asignado.
Fuente: www.iplacex.cl
www.iplacex.cl25
Imagen 24: Visualización de mensaje de error durante proceso de
validación con IDataErrorInfo
Fuente: www.iplacex.cl
c. ValidationRule
www.iplacex.cl26
Imagen 25: Estructura de clase validadora LargoMinimoRule
Fuente: www.iplacex.cl
www.iplacex.cl27
A nivel de interfaz, la implementación será la siguiente:
Fuente: www.iplacex.cl
www.iplacex.cl28
Imagen 27: Visualización de mensaje de error durante proceso de
validación con ValidationRule
Fuente: www.iplacex.cl
d. Data Annotations
Data Annotations es una librería que forma parte del sistema, por lo
que puede ser referenciada dentro del proyecto en donde esté
presente la clase modelo, en ese caso, el proyecto Negocio.
www.iplacex.cl29
Algunos Data Annotations son:
www.iplacex.cl30
StringLengthAttribute especifica el largo [StringLength]
que debe tener una
propiedad
SABER MÁS
Estos son solo algunos de los atributos de Data Annotations que existen
en C#. Si quieres conocer todas las existentes, visita Data Annotations
Fuente: www.iplacex.cl
www.iplacex.cl31
Para cada una de los Data Annotations de las propiedades de la clase
Producto mostrado anteriormente, existe un ErrorMessage. Este será una
cadena de texto que mostrará un mensaje de error que el mismo
desarrollador puede asignar.
Fuente: www.iplacex.cl
www.iplacex.cl32
Imagen 30: Visualización de mensaje de error durante proceso de
validación con Data Annotations
Fuente: www.iplacex.cl
www.iplacex.cl33
5. Expresiones regulares
Por defecto, WPF no posee un control exclusivo para números, por lo que,
era necesario aplicar pasos adicionales si se deseaba que solo se puedan
ingresar números. Para lograr este cometido, se implementó dentro del
evento PreviewTextInput de dichos controles, una expresión regular que
validara que solo se podrían ingresar valores numéricos.
[^0-9]+
En donde:
• [^0-9] representa si la coincidencia no se encuentra dentro del grupo
de caracteres, los cuales vendría a ser números que contengan los
dígitos desde el 0 al 9, entonces no debe poder escribirse en el
textbox.
• + representa la evaluación de los elementos previos una o siguientes
dentro del campo de texto
www.iplacex.cl34
Algunas de las expresiones regulares más utilizadas son:
www.iplacex.cl35
Conclusión
Las validaciones son parte importante del desarrollo de una aplicación,
permitiendo verificar si los datos ingresados por el usuario corresponden y
cumplen a lo esperado por parte del cliente para ser guardados dentro de
una base de datos.
Para lograr esto, es posible aplicar diversos tipos de validaciones, los que
pueden actuar en conjunto o solo implementando un camino en concreto,
dependiendo de factores, como la facilidad de implementación,
conocimiento del desarrollador o de tecnologías adicionales que deban ser
integradas.
www.iplacex.cl36
Bibliografía
Data Binding overview (WPF .NET)
https://learn.microsoft.com/en-us/dotnet/desktop/wpf/data/?view=netdesktop-6.0
Reflection
https://learn.microsoft.com/en-us/dotnet/csharp/programming-
guide/concepts/reflection
IDataErrorInfo
https://learn.microsoft.com/en-us/previous-
versions/windows/apps/743swcz7(v=vs.105)
ValidationRule Class
https://learn.microsoft.com/en-
us/dotnet/api/system.windows.controls.validationrule?view=windowsdeskto
p-6.0
ToolTip Overview
https://learn.microsoft.com/en-us/dotnet/desktop/wpf/controls/tooltip-
overview?view=netframeworkdesktop-4.8
www.iplacex.cl37
www.iplacex.cl38