2012-09-15 7 views

Antwort

26

Die MessageDialog class sollte Ihren Bedürfnissen entsprechen.

+0

In dem Namensraum der MessageDialog Klasse tut, ist – user1547566

+0

enthalten @ user1547566 ich die Klasse in der Antwort verknüpft. –

+0

ya hab es, danke – 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(); 

Und Ihre Rückrufe

private void CancelBtnClick(IUICommand command) 
{ 
} 

private void OkBtnClick(IUICommand command) 
{ 
} 


P. S. Sie können this tutorial für mehr folgen.

+0

Gibt es nicht einen einfacheren Weg? –

+2

Machen Sie einfach einen Wrapper darüber, dass es einfacher wird –

8

Für einfachere Möglichkeit, Nur um den Nachrichtentext anzuzeigen und OK-Taste. Verwenden Sie Windows.UI.Popups Namespace. Erstellen Sie eine Methode messagebox() diese Methode soll wie

messageBox("Unexpected error held"); 
+1

Sie sollten fast nie 'async void' Methoden verwenden. – svick

+0

@svick: Was ist der Grund dafür? –

+2

@DominikC Weil es keine Möglichkeit gibt herauszufinden, wann es abgeschlossen ist, was die Fehlerbehandlung fast unmöglich macht. Weitere Informationen finden Sie unter [dieser Artikel] (http://msdn.microsoft.com/en-us/magazine/jj991977.aspx). – svick

12

Meine einfache Weise

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

Dann rufen Sie diese Methode in Ihrem Code sein, für die Bestätigung Typ Meldungsfelder:

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

Weitere Leckerbissen:

Es erscheint in einer modernen Windows App ein MessageDialog wird nicht angezeigt, bevor Ihre App ihren Window.Current.Active() - Aufruf ausführt, was normalerweise in der App-Klasse "OnLaunched()" -Methode passiert. Wenn Sie versuchen, MessageDialog so zu verwenden, dass eine Startup-Ausnahme angezeigt wird, sollten Sie dies im Hinterkopf behalten.

Meine Tests zeigen an, dass MessageDialog.ShowAsync() tatsächlich warten kann, aber ohne dass der Dialog angezeigt wird, wenn Window.Current.Active() noch nicht aufgerufen wurde. Aus Sicht der Codeausführung sieht alles so aus aber noch kein Dialog wird angezeigt.

Wenn das Ziel darin besteht, beim Start eine Ausnahme anzuzeigen, kann ich mir zwei Optionen vorstellen (möglicherweise mehr).

  1. Erfassen Sie die Ausnahmeinformationen und warten Sie, bis sie nach Window.Current.Activate() angezeigt wird. Dies kann funktionieren, wenn die Ausnahme so ist, dass die Anwendung von ihr wiederherstellen und mit dem Start fortfahren kann. Wenn beispielsweise ein Fehler beim Wiederherstellen gespeicherter Statusinformationen auftritt, möchte die App dies möglicherweise dem Benutzer melden, wird dann jedoch fortgesetzt, als ob kein gespeicherter Status vorhanden wäre.

  2. Wenn die Situation so ist, dass die App ihre Hände wirft und beabsichtigt, zu beenden, aber den Benutzer wissen lassen möchte, was passiert ist, dann könnte eine andere Lösung sein, einen separaten dedizierten Codeblock/eine Methode zu haben, die a neuer sauberer Rahmen in Windows.Current.Content, aktiviert ihn unter Verwendung von Windows.Current.Activate() und ruft MessageDialog.ShowAsync() auf. Ich habe mit diesem Ansatz nicht experimentiert, daher bin ich mir nicht sicher, ob auch andere Bedingungen erfüllt sein müssen, wie das Laden einer Seite in den Frame.

0

Einsatz für Seite wie:

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

wenn irgendein Körper sql Passwort vergessen, so wie kann er es benutzen. ????? – user5823144

Verwandte Themen