2012-09-15 13 views

Respuesta

26

El MessageDialog class debe satisfacer sus necesidades.

+0

En qué espacio de nombres que hace la clase MessageDialog está contenida – user1547566

+0

@ user1547566 he vinculado a la clase en la respuesta. –

+0

ya lo tienes, gracias – user1547566

47
MessageDialog msgDialog = new MessageDialog("Your message", "Your title"); 

    //OK Button 
    UICommand okBtn = new UICommand("OK"); 
    okBtn.Invoked = OkBtnClick; 
    msgDialog.Commands.Add(okBtn); 

    //Cancel Button 
    UICommand cancelBtn = new UICommand("Cancel"); 
    cancelBtn.Invoked = CancelBtnClick; 
    msgDialog.Commands.Add(cancelBtn); 

    //Show message 
    msgDialog.ShowAsync(); 

y su llamada respalda

private void CancelBtnClick(IUICommand command) 
{ 
} 

private void OkBtnClick(IUICommand command) 
{ 
} 


P. S. Puede seguir this tutorial para más.

+0

¿No hay una manera más simple? –

+2

Simplemente haga una envoltura sobre ella que sea más simple –

8

Para una forma más simple, solo para mostrar el texto del mensaje y el botón OK. Use el espacio de nombre Windows.UI.Popups. Crear un método messagebox() que el método debe ser

using Windows.UI.Popups; 
protected async void messageBox(string msg) 
{ 
     var msgDlg = new Windows.UI.Popups.MessageDialog(msg); 
     msgDlg.DefaultCommandIndex = 1; 
     await msgDlg.ShowAsync(); 
} 

A continuación, llamar a este método en su código como

messageBox("Unexpected error held"); 
+1

Casi nunca debería usar los métodos 'async void'. – svick

+0

@svick: ¿Cuál es la razón para eso? –

+2

@DominikC Porque no hay forma de saber cuándo se completa, lo que también hace que el manejo de errores sea casi imposible. Para obtener detalles, busque, por ejemplo, [en este artículo] (http://msdn.microsoft.com/en-us/magazine/jj991977.aspx). – svick

12

Mi forma más simple, para las cajas de mensajes de tipo de confirmación:

var dlg = new MessageDialog("Are you sure?"); 
    dlg.Commands.Add(new UICommand("Yes", null, "YES")); 
    dlg.Commands.Add(new UICommand("No", null, "NO")); 
    var op = await dlg.ShowAsync(); 
    if ((string)op.Id == "YES") 
    { 
    //Do something 
    } 
2

dato adicional:

Aparece en una aplicación moderna de Windows un mensajeDialog no se mostrará antes de que su aplicación haga su llamada Window.Current.Active(), que generalmente ocurre en el método 'OnLaunched()' de la clase de la aplicación. Si está tratando de usar MessageDialog para mostrar algo así como una excepción de arranque, eso es importante tenerlo en cuenta.

Mi prueba indica que MessageDialog.ShowAsync() puede realmente esperar pero sin que se muestre el cuadro de diálogo si Window.Current.Active() aún no se ha llamado, por lo que desde el punto de vista de la ejecución del código parecerá que todo está funcionando pero aún no se muestra ningún diálogo.

Si el objetivo es mostrar una excepción durante la puesta en marcha, puedo pensar en dos opciones (puede haber más).

  1. Capture la información de la excepción y espere a que aparezca hasta después de Window.Current.Activate(). Esto puede funcionar si la excepción es tal que la aplicación puede recuperarse y continuar con la puesta en marcha. Por ejemplo, si se produce un error al restaurar la información del estado guardado, es posible que la aplicación desee informarlo al usuario, pero luego continuar con la puesta en marcha como si no hubiera estado guardado.

  2. Si la situación es tal que la aplicación está levantando las manos y con la intención de terminar, pero quiere que el usuario sepa qué sucedió, entonces otra solución podría ser tener un bloque de código dedicado/método que conecta un nuevo marco limpio en Windows.Current.Content, lo activa usando Windows.Current.Activate(), y luego invoca MessageDialog.ShowAsync(). No he experimentado con este enfoque, por lo que no estoy seguro si también se deben cumplir otras condiciones, como posiblemente cargar una página en el marco.

0

uso de la página como:

private async void AppBarButton_Click(object sender, RoutedEventArgs e) 
{ 
    Windows.UI.Popups.MessageDialog a = new Windows.UI.Popups.MessageDialog("hello this is awth"); 
    await a.ShowAsync(); 
} 
+0

si alguien olvida la contraseña de sql, ¿cómo puede usarla? ????? – user5823144

Cuestiones relacionadas