У меня проблема с получением ответа из сообщения displayalert в формах xamarin - PullRequest
0 голосов
/ 01 апреля 2020

Мне нужно получить возвращаемое значение из всплывающего окна displayAlert. Но это немного сложно, потому что я вставил это всплывающее окно в оператор if, а не в метод asyn c void. Вот код:

private void cityButton_Clicked(object sender, EventArgs e)
{
   if (cityButton.Text == "Amsterdam")
   {
       DisplayAlert("Congrats!", "You Did it", "Exit", "Save");
   }
}

Я хочу получить ответ и создать оператор if сразу после этого displayAlert, который будет выглядеть примерно так:

if(answer == "Save")
{
 do something
}
else //this is gonna be for the exit part
{
do something
}

Но Я не могу вывести значение, потому что всплывающее окно displayAlert не в asyn c void метод. И я не могу использовать asyn c метод в этом операторе if. Кто-нибудь может мне помочь с этим вопросом?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Вы можете использовать ContinueWith вместо async/await следующим образом:

private void cityButton_Clicked(object sender, EventArgs e) 
{ 
    if (cityButton.Text == "Amsterdam")       
    {  
        DisplayAlert("Congrats!", "You Did it", "Exit", "Save").ContinueWith(tsk => {

          if(tsk.Result == true) { 
            // do something 
          } 
          else //this is gonna be for the exit part 
          { 
            // do something 
          }

        }); 
    }
}

Но я не вижу причин, почему вы не можете использовать async/await для этого назначения функции

0 голосов
/ 01 апреля 2020

Вы можете напрямую использовать этот обратный клапан DisplayAlert, если вы нажмете Yes, вы получите значение True, если вы нажмете No, вы получите значение false

  private async void Button_Clicked(object sender, EventArgs e)
        {
            var answer = await DisplayAlert("Question?", "Would you like to play a game", "Yes", "No");
            Debug.WriteLine("Answer: " + answer); // writes true or false to the console
        }
...