2016-06-01 3 views
0

Wie?IMessageService.ShowAsync im INavigationService.ApplicationClosing-Ereignis

Ich habe diese beiden Methoden versucht, aber keine funktioniert. Der erste hängt, der zweite beendet das Programm (ohne Ausnahme).

private void ApplicationClosing1(object sender, ApplicationClosingEventArgs e) 
{ 
    MessageResult result = MessageResult.None; 
    if (!isClosing && IsDirty) 
    { 
     result = MessageService.ShowAsync("blah", "blah", 
      MessageButton.YesNoCancel, MessageImage.Warning) 
      .GetAwaiter().GetResult(); 

     switch (result) 
     { 
      case MessageResult.Cancel: 
       e.Cancel = true; 
       return; 
      case MessageResult.Yes: 
       isClosing = true; 
       SaveAsync(); 
       break; 
      default: 
       isClosing = true; 
       break; 
     } 
    } 
} 

und

private async void ApplicationClosing2(object sender, ApplicationClosingEventArgs e) 
{ 
    if (!isClosing && IsDirty) 
    { 
     var result = await MessageService.ShowAsync("blah","blah", 
      MessageButton.YesNoCancel, MessageImage.Warning); 

     switch (result) 
     { 
      case MessageResult.Cancel: 
       e.Cancel = true; 
       return; 
      case MessageResult.Yes: 
       isClosing = true; 
       await SaveAsync(); 
       break; 
      default: 
       isClosing = true; 
       break; 
     } 
    } 
} 

Antwort

0

Sie es auf die gleiche Weise wie die Datawindows lösen könnte kümmert sich um diese. Zuerst set e.Cancel = true, dann, wenn der Benutzer antwortet, setze einen internen bool _reallyClose und setze e.Cancel nicht, wenn das wahr ist.

Verwandte Themen