[Windows 8] Trabajando con el MessageDialog

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!

You may also like...

5 Responses

  1. August 20, 2012

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

  2. August 22, 2012

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

  3. August 22, 2012

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

  4. November 8, 2012

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

  5. December 19, 2012

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

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: