Anteriormente mostré cómo utilizar el control DataForm, explicando de que manera podemos asociarle información y cuales son las propiedades que podemos utilizar. Puede ver el post aquí.

Ahora voy a mostrar dos cuestiones importantes, la primera es cómo implementar IEditableObject, para poder agregar lógica y además como agregarle validaciones a los campos del formulario.

Vamos a tomar el ejemplo del post anterior, o sea reutilizamos el XAML y la parte donde enlazamos los datos al formulario.

IMPLEMENTADO IEDITABLEOBJECT

Si necesitamos agregar lógica en las operaciones de edición, grabado de los datos, podemos utilizar la interfaz IEditableObject, que nos da la posibilidad de utilizar tres eventos BeginEdit(), CancelEdit(), EndEdit(), donde vamos a agregar nuestra lógica.

Nuestra clase quedaría de la siguiente manera

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Disco : IEditableObject

1
{

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> DiscoID { get; set; }

1
<span style="color: #0000ff">public</span> DateTime FechaAlta { get; set; }

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Nombre { get; set; }

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Banda { get; set; }

1
<span style="color: #0000ff">public</span> Generos Genero { get; set; }

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> Anio { get; set; }

1
&#160;

1
<span style="color: #cc6633">#region</span> IEditableObject Members

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> BeginEdit()

1
{

1
<span style="color: #008000">// Va a empezar a editar</span>

1
}

1
&#160;

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> CancelEdit()

1
{

1
<span style="color: #008000">// Cancelo la edición</span>

1
}

1
&#160;

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> EndEdit()

1
{

1
<span style="color: #008000">// Terminó la edición</span>

1
}

1
<span style="color: #cc6633">#endregion</span>

1
}

Dentro de las funciones podemos agregar la funcionalidad que necesitemos, cómo cancelar la edición o lo que necesitemos.

OPCIONES PARA MOSTRAR CAMPOS

Primero vamos a agregar las referencias necesarias

  • System.ComponentModel
  • System.ComponentModel.DataAnnotations

Otra opción interesante, es que título aparece al lado del campo, si podemos agregar una ayuda para saber que se esta cargando.

Para esto vamos a utilizar el atributo Display.

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> DiscoID { get; set; }

1
&#160;

1
[Display(Name=<span style="color: #006080">&quot;Fecha de Alta&quot;</span>,

1
Description = <span style="color: #006080">&quot;Fecha de alta del registro&quot;</span>,

1
Order = 6)]

1
<span style="color: #0000ff">public</span> DateTime FechaAlta { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;Albúm&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el nombre del albúm&quot;</span>)]

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Nombre { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;Banda&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el nombre del intérprete&quot;</span>)]

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Banda { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;©nero&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el ©nero del albúm&quot;</span>)]

1
<span style="color: #0000ff">public</span> Generos Genero { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;±o&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el ±o de lanzamiento&quot;</span>)]

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> Anio { get; set; }

Vemos que la propiedad Name define el texto que identifica al campo, antes nos mostraba el nombre de la propiedad, que no refleja con exactitud lo que queremos mostrar.

La propiedad Description nos define el texto de ayuda que va a mostrarse, recuerden que el control DataForm tiene una propiedad llamada DescriptionViewerPosition que nos indica donde va a poner el botón que muestra esta información.DF2 La propiedad Order nos permite ordenar los campos.

VALIDACIONES

Si tenemos la necesidad de validar el texto cargado podemos hacerlo agregando algunos atributos como son Required, Range, RegularExpression.

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> DiscoID { get; set; }

1
&#160;

1
[Display(Name=<span style="color: #006080">&quot;Fecha de Alta&quot;</span>,

1
Description = <span style="color: #006080">&quot;Fecha de alta del registro&quot;</span>,

1
Order = 6)]

1
<span style="color: #0000ff">public</span> DateTime FechaAlta { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;Albúm&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el nombre del albúm&quot;</span>)]

1
[Required(ErrorMessage = <span style="color: #006080">&quot;El albúm no puede ser vacío&quot;</span>)]

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Nombre { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;Banda&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el nombre del intérprete&quot;</span>)]

1
[Required(ErrorMessage = <span style="color: #006080">&quot;El intérprete no puede ser vacío&quot;</span>)]

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Banda { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;©nero&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el ©nero del albúm&quot;</span>)]

1
<span style="color: #0000ff">public</span> Generos Genero { get; set; }

1
&#160;

1
[Display(Name = <span style="color: #006080">&quot;±o&quot;</span>,

1
Description = <span style="color: #006080">&quot;Ingrese el ±o de lanzamiento&quot;</span>)]

1
[Range(1950, 2009, ErrorMessage = <span style="color: #006080">&quot;El ±o no es ¡lido&quot;</span>)]

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> Anio { get; set; }

De esta manera vamos agregando las validaciones que queremos. Estas se mostrarán en un sumario de errores que tiene el control.DF3

Pueden descargar el proyecto aquí.