2016-06-01 15 views
0

Verwendung des Inhaltsdialogs als einfacher Anmeldebildschirm. Wenn ich versuche, es so zu verwenden:UWP, Inhaltsdialog für Login

ContentDialog d = new ContentDialog(); 
     d.Content = contentGrid; 
     d.PrimaryButtonText = "aaa"; 
     d.PrimaryButtonClick += async delegate 
     { 

     }; 
await dlg.ShowAsync(); 

Taste Ein Klick ich einige Logik laufen kann, aber es funktioniert EntireDialog verstecken. Ich möchte eine Bearbeitungs-Animation zeigen und einige "Check" -Ergebnisse anzeigen. Ist das überhaupt möglich?

Antwort

1

Ja, das ist möglich. Der wichtigste Punkt hier ist, ContentDialogButtonClickEventArgs.GetDeferral method zu verwenden, um eine ContentDialogButtonClickDeferral vor dem Ausführen von asynchronen Operationen zu erhalten und dann die Verzögerung abzuschließen, wenn der asynchrone Vorgang abgeschlossen ist. Zum Beispiel:

ContentDialog contentDialog = new ContentDialog(); 
contentDialog.Content = "Login Test"; 
contentDialog.PrimaryButtonText = "Login"; 
contentDialog.PrimaryButtonClick += async (s, args) => 
{ 
    ContentDialogButtonClickDeferral deferral = args.GetDeferral(); 

    //Do Some Async Sign In Operation 
    await Task.Delay(3000); //Here I just wait 3 seconds 

    deferral.Complete(); 
}; 
await contentDialog.ShowAsync(); 

Und es ist ein Beispiel zeigt, wie erstellen und einen benutzerdefinierten Dialog (SignInContentDialog) aus ContentDialog unter dem Beispielen Abschnitt in ContentDialog class abgeleitet zu verwenden. Sie können einen Scheck haben.

+0

* SignInContentDialog Vielen Dank. Scheint zu arbeiten. –

+0

Ich habe ein Problem, wenn ich incorect Login verwende, und dann auf die Schaltfläche Abbrechen, das gesamte Fenster schließt. = \ –

+0

@ J.Duck Dies ist beabsichtigt, wenn Benutzer auf Abbrechen klicken, wird der ContentDialog geschlossen. –