2017-06-09 3 views
1

Ich verwende die Acr.Dialogs wie folgt, um das Dialogfeld anzuzeigen. Es scheint jedoch, dass es nur eine Taste unterstützt, die OK ist. Ich möchte jedoch Cancel und OK Tasten haben.Warnung in ViewModel

ViewModel.cs

var alertConfig = new AlertConfig 
{ 
    Message = "Are you sure?", 
    OnOk =() => { 
     NotifyUpdated(); 
    }, 
}; 
Mvx.Resolve<IUserDialogs>().Alert(alertConfig); 
+0

Wenn Sie mehr als eine Taste haben, an diesem Punkt ist es nicht eine Warnung, es ist ein * Prompt *. – Amy

+0

Ok, ich schaue dann 'prompt' dann. – hotspring

+0

Vom Konzept her ist eine Warnung einfach etwas, das der Benutzer bestätigt - es ist nicht sinnvoll, eine Warnung "abzubrechen". Wenn eine Entscheidung getroffen werden soll, wird jetzt nach Benutzereingaben gefragt. – Amy

Antwort

2

Bestätigungsdialoge haben OK und standardmäßig auf Abbrechen. Sie können stattdessen die Methode Task<bool> IUserDialogs.ConfirmAsync(string message, string title = null, string okText = null, string cancelText = null, CancellationToken? cancellationToken) verwenden.

var confirm = await Mvx.Resolve<IUserDialogs>().ConfirmAsync("Are you sure?"); 
if (confirm) 
{ 
    NotifyUpdated(); 
} 
else 
{ 
    // User pressed Cancel 
} 

Wenn Sie wollen die Dinge halten synchron Sie diesen Code verwenden:

Mvx.Resolve<IUserDialogs>().Confirm(new ConfirmConfig 
{ 
    OnAction = b => 
    { 
     if (b) 
     { 
      NotifyUpdated(); 
     } 
     else 
     { 
      // User pressed Cancel 
     } 
    } 
}); 
+0

Ich sehe keine Stornierung in Ihrem Beispiel? – hotspring

+0

Ich habe den Beispielcode aktualisiert, um zu zeigen, wie mit cancel verfahren wird. Wenn Sie den Dialog programmatisch schließen möchten, sollten Sie [hier] (https://github.com/aritchie/userdialogs/issues/68) nachsehen. –