[Windows 8] Trabajando con el MessageDialog

Posted on Actualizado enn


Anteriormente, cuando desarrollábamos aplicaciones Windows uno de los elementos que más se utilizaba era el MessageBox, el cual permitía mostrar mensajes al usuario, con un título, un contenido y algunos botones, y ahora con las aplicaciones para Windows 8 también son necesarios…pero ya no tenemos el MessageBox Confundido

Para solucionar el dilema anterior, tenemos la clase MessageDialog, y lo mejor de todo es que esta clase ya viene lista para ser usada junto con async y await, así que manos a la obra, para este ejemplo vamos a crear una nueva aplicación para Windows 8 utilizando la plantilla en blanco, luego en MainPage.xaml crearemos un botón para abrir el mensaje, así el xaml será:

   1:  <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
   2:      <StackPanel>
   3:          <Button x:Name="btnMostrarMensaje" Content="Mostrar Mensaje" Click="btnMostrarMensaje_Click_1"></Button>
   4:      </StackPanel>
   5:  </Grid>

El código anterior solo declara un botón y un manejador para el evento click, y la lógica de ese evento:

   1:  private async void btnMostrarMensaje_Click_1(object sender, RoutedEventArgs e)
   2:  {
   3:      var dialogo = new Windows.UI.Popups.MessageDialog("Contenido del mensaje", "Título del mensaje");
   4:      await dialogo.ShowAsync();
   5:  }

Antes de explicar el corto código, veamos como se vería el mensaje:

image

Y ahora el código, como comente anteriormente, esta clase ya viene lista para ser usada con async y await, por lo tanto en la declaración del evento click se tiene private async void….el async es necesario para luego poder utilizar el await, luego estamos creando un objeto de tipo MessageDialog, el cual esta en Windows.UI.Popups, este tiene dos firmas diferentes, una de ellas recibe el contenido del diálogo y el título (como en el ejemplo), y la otra solo el contenido, y finalmente para mostrarlo usamos el método ShowAsync(); recuerden que por convención sabemos que los métodos que terminar con Async en su nombre es porque tienen el modificador async, lo cual nos permite llamarlo utilizando la palabra clave await.

Algo que notamos, es que se ha creado un botón “mágicamente”, pues nosotros no lo hemos definido, lo bueno es que en efecto el botón funciona, y lo mejor de todo es que nosotros podemos definir los botones que necesitemos, así que para complementar el ejemplo vamos a crear dos botones, reescribiendo el código del evento click tendríamos:

   1:  private async void btnMostrarMensaje_Click_1(object sender, RoutedEventArgs e)
   2:  {
   3:      var dialogo = new Windows.UI.Popups.MessageDialog("Contenido del mensaje", "Título del mensaje");
   4:   
   5:      //Primer botón
   6:      dialogo.Commands.Add(new Windows.UI.Popups.UICommand("Mi Botón 1", 
   7:          new Windows.UI.Popups.UICommandInvokedHandler((args) => { /* Lógica */ })
   8:      ));
   9:   
  10:      //Segundo botón
  11:      dialogo.Commands.Add(new Windows.UI.Popups.UICommand("Mi Botón 2",
  12:          new Windows.UI.Popups.UICommandInvokedHandler((args) => { /* Lógica */ })
  13:      ));
  14:   
  15:      await dialogo.ShowAsync();
  16:  }

Entonces, para agregar un nuevo botón en realidad lo que hacemos es adicionar un nuevo comando utilizando Commands.Add, allí utilizamos UICommand, el cuál como primer parámetro recibe el texto del botón, y el segundo parámetro (es opcional) lo utilizamos para decirle al botón que es lo que debe hacer… y cómo? allí utilizamos una expresión lambda, si las conoces mira este link, y s ahora vemos como se ve el diálogo:

image

Y como se puede ver ya tenemos los dos botoncitos.

Saludos!

About these ads

5 comentarios en “[Windows 8] Trabajando con el MessageDialog

    [...] vimos como utilizar el MessageDialog (mira el post acá), y en este post vamos a dar una revisadita al ContextMenu, que como su nombre [...]

    [...] vimos como utilizar el MessageDialog (mira el post acá), y en este post vamos a dar una revisadita al ContextMenu, que como su nombre [...]

    [...] [Windows 8] Trabajando con el MessageDialog [...]

    [...] [Windows 8] Trabajando con el MessageDialog [...]

    Resumen Post 2012 « Todo en ASP.NET escribió:
    12/19/2012 en 22:05

    [...] [Windows 8] Trabajando con el MessageDialog [...]

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s