Silverlight 3 sigue mostrando que puede ser considerado como una alternativa a la hora de desarrollar aplicaciones de negocio, una de las características que hacen más fácil este tipo de desarrollo es el control DataForm, que nos permite de manera sencilla generar un formulario de carga de datos.

Este control nos permite agregar navegación entre una serie de datos, poder agregar, modificar o borrar datos, manejo de validaciones de los mismos.

Para poder utilizar este control, debemos descargar e instalar Silverlight Toolkit. Para esto, debemos ir aquí.

Vamos a crear un nuevo proyecto Silverlight y como primer paso vamos a agregar la referencia a System.Windows.Controls.Data.DataForm.Toolkit.

Vamos entonces a generar en el XAML el control DataForm. Primero creamos la referencia dentro del XAML a la librería DataForm.

1
xmlns:df="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit"

Luego agregamos el control.

1
<span style="color: #0000ff">&lt;</span><span style="color: #800000">df:DataForm</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">=&quot;dataFormDiscos&quot;</span>

1
<span style="color: #ff0000">CancelButtonContent</span><span style="color: #0000ff">=&quot;Cancelar&quot;</span>

1
<span style="color: #ff0000">CommitButtonContent</span><span style="color: #0000ff">=&quot;Grabar&quot;</span>

1
<span style="color: #ff0000">CommandButtonsVisibility</span><span style="color: #0000ff">=&quot;All&quot;</span>

1
<span style="color: #ff0000">AutoCommit</span><span style="color: #0000ff">=&quot;False&quot;</span>

1
<span style="color: #ff0000">AutoEdit</span><span style="color: #0000ff">=&quot;False&quot;</span>

1
<span style="color: #ff0000">LabelPosition</span> <span style="color: #0000ff">=&quot;Top&quot;</span>

1
<span style="color: #ff0000">Header</span><span style="color: #0000ff">=&quot;Formulario&quot;</span> <span style="color: #0000ff">/&gt;</span>

Estas son algunas de las propiedades que posee el control

  • AutoCommit – indica si graba los datos al hacer click sobre la navegación, sin necesidad de presionar el botón Grabar
  • AutoEdit – si al entrar a visualizar un dato, aparece en modo edición directamente
  • CancelButtonContent – el texto que se muestra en el botón para cancelar la edición
  • CommitButtonContent – el texto que se muestra en el botón para confirmar la edición
  • CommandButtonsVisibility – que botones van a aparecer. Si definimos la propiedad como “All”, aparecen los botones editar, agregar y borrar. Si queremos que no aparezca alguno, debemos agregar a esta propiedad aquellos que queremos que aparezcan.
  • DescriptionViewerPosition – define la posición de la descripción con respecto al input del campo (es un ayuda del campo a cargar)
  • LabelPosition – define la posición del título del campo
  • Header – el título del control
  • AutoGenerateFields – si genera los campos automáticamente

Para llenar el DataForm vamos a generar una clase que vamos a utilizar en el ejemplo

1
<span style="color: #0000ff">namespace</span> DataForm

1
{

1
<span style="color: #0000ff">public</span> <span style="color: #0000ff">enum</span> Generos

1
{

1
Pop,

1
Rock,

1
Heavy,

1
Alternativo

1
}

1
&#160;

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

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
}

1
}

Ahora solamente falta asociar los datos al formulario. Vamos a generar el enlace desde el evento Load del control.

1
ObservableCollection&lt;Disco&gt; discos = <span style="color: #0000ff">new</span> ObservableCollection&lt;Disco&gt;();

1
&#160;

1
discos.Add(<span style="color: #0000ff">new</span> Disco() { DiscoID = 1,

1
Nombre = <span style="color: #006080">&quot;Dr. Feelgood&quot;</span>,

1
Anio = 1989,

1
Banda = <span style="color: #006080">&quot;Motley Crue&quot;</span>,

1
Genero = Generos.Rock,

1
FechaAlta = DateTime.Now.AddDays(-4)});

1
discos.Add(<span style="color: #0000ff">new</span> Disco() { DiscoID = 2,

1
Nombre = <span style="color: #006080">&quot;In The Dynamite Jet Saloon&quot;</span>,

1
Anio = 1988,

1
Banda = <span style="color: #006080">&quot;The Dogs D'amour&quot;</span>,

1
Genero = Generos.Rock,

1
FechaAlta = DateTime.Now.AddDays(-4)});

1
discos.Add(<span style="color: #0000ff">new</span> Disco() { DiscoID = 3,

1
Nombre = <span style="color: #006080">&quot;Take It To The Limit&quot;</span>,

1
Anio = 2008,

1
Banda = <span style="color: #006080">&quot;Hinder&quot;</span>,

1
Genero = Generos.Alternativo,

1
FechaAlta = DateTime.Now.AddDays(-2)});

1
discos.Add(<span style="color: #0000ff">new</span> Disco() { DiscoID = 4,

1
Nombre = <span style="color: #006080">&quot;Open Up And Say...Ahh!&quot;</span>,

1
Anio = 1988,

1
Banda = <span style="color: #006080">&quot;Poison&quot;</span>,

1
Genero = Generos.Rock,

1
FechaAlta = DateTime.Now.AddDays(-1)});

1
discos.Add(<span style="color: #0000ff">new</span> Disco() { DiscoID = 5,

1
Nombre = <span style="color: #006080">&quot;The Number Of The Beast&quot;</span>,

1
Anio = 1982,

1
Banda = <span style="color: #006080">&quot;Iron Maiden&quot;</span>,

1
Genero = Generos.Heavy,

1
FechaAlta = DateTime.Now});

1
&#160;

1
dataFormDiscos.ItemsSource = discos;

De esta manera, de forma sencilla generamos un formulario para navegar y editar datos.DF1

Pueden descargar el proyecto aquí.

Próximamente estaré mostrando de que manera podemos agregar lógica durante los procesos de edición a través de la utilización de IEditableObject, además de mostrar como podemos agregar validaciones al formulario.