Всплывающие окна Xamarin.Forms

Автор:

www.microsoft.com

Самые распространенные задачи пользовательского интерфейса – отображение оповещения, предложение пользователю сделать выбор или отображение подсказки. В Xamarin.Forms есть три метода класса Page для взаимодействия с пользователем через всплывающее окно: DisplayAlert, DisplayActionSheet и DisplayPromptAsync. Они отображаются с соответствующими нативными контролами управления на каждой платформе.

Отображение оповещения

Все платформы, поддерживаемые Xamarin.Forms, имеют модальное всплывающее окно для оповещения пользователя или с целью задать ему простые вопросы. Для отображения этих оповещениий в Xamarin.Forms используйте метод DisplayAlert на любой странице. Следующая строка кода показывает простое сообщение пользователю:

C#
await DisplayAlert ("Alert", "You have been alerted", "OK");

В этом примере не предполагается сбор информации от пользователя. Оповещение отображается модально, и после его отключения пользователь продолжает взаимодействовать с приложением.

Метод DisplayAlert также может быть использован для получения реакции пользователя путем отображения двух кнопок и возврата булевой величины. Чтобы получить ответ от оповещения, предоставьте текст для обеих кнопок и ожидайте выполнения метода. После того, как пользователь выберет один из вариантов, ответ будет возвращен в ваш код. Обратите внимание на ключевые слова async и await в приведенном ниже примере кода:

C#
async void OnAlertYesNoClicked (object sender, EventArgs e)
{
 bool answer = await DisplayAlert ("Question?", "Would you like to play a game", "Yes", "No");
 Debug.WriteLine ("Answer: " + answer);
}

Метод DisplayAlert также имеет перегрузки, которые принимают аргумент FlowDirection, определяющий направление потока элементов пользовательского интерфейса в оповещении.

Предупреждение. По умолчанию в UWP при отображении предупреждения все ключи доступа, определенные на странице за предупреждением, могут быть активированы.

Руководство пользователей при выполнении задач

UIActionSheet является распространенным элементом пользовательского интерфейса в iOS. Метод Xamarin.Forms DisplayActionSheet позволяет включать этот элемент управления в кроссплатформенные приложения, создавая нативные альтернативы в Android и UWP.

Чтобы отобразить лист действий, выполните DisplayActionSheet на любой странице (Page), передав сообщение и название кнопок в виде строк. Метод возвращает название кнопки, на которую нажал пользователь.

Пример:

C#
async void OnActionSheetSimpleClicked (object sender, EventArgs e)
{
 string action = await DisplayActionSheet ("ActionSheet: Send to?", "Cancel", null, "Email", "Twitter", "Facebook");
 Debug.WriteLine ("Action: " + action);
}

Кнопка destroy отображается иначе, чем другие кнопки на iOS, и может быть оставлена нулевой (null) или указана в качестве третьего строкового параметра. В следующем примере используется кнопка destroy:

C#
async void OnActionSheetCancelDeleteClicked (object sender, EventArgs e)
{
 string action = await DisplayActionSheet ("ActionSheet: SavePhoto?", "Cancel", "Delete", "Photo Roll", "Email");
 Debug.WriteLine ("Action: " + action);
}

Метод DisplayActionSheet также имеет перегрузку, которая принимает аргумент FlowDirection, определяющий направление потока элементов пользовательского интерфейса в листе действий.

Отображение подсказки

Для отображения подсказки необходимо вызвать метод DisplayPromptAsync на любой странице (Page), передав заголовок и сообщение в качестве строковых аргументов:

C#
string result = await DisplayPromptAsync("Question 1", "What's your name?");

Подсказка отображается модально:

Если нажата кнопка OK, введенный ответ возвращается в виде строки. Если нажата кнопка Cancel, возвращается null.

Полный список аргументов для метода DisplayPromptAsync:

  • title, тип string, – заголовок для отображения в подсказке.
  • message, тип string, – сообщение для отображения в подсказке.
  • accept, тип string, – текст для кнопки accept. Это необязательный аргумент, значение по умолчанию – OK.
  • cancel, тип string, – текст для кнопки отмены. Это необязательный аргумент, значение по умолчанию - Cancel.
  • placeholder, тип string, – текст-заставка для отображения в подсказке. Это необязательный аргумент, значение по умолчанию – null.
  • maxLength, тип int, – максимальная длина ответа пользователя. Это необязательный аргумент, значение по умолчанию -1.
  • keyboard, тип Keyboard, – тип клавиатуры, который будет использоваться для ответа пользователя. Это необязательный аргумент, значение по умолчанию – Keyboard.Default.
  • initialValue, тип string, – предопределенный ответ, который будет отображаться и который можно редактировать. Это необязательный аргумент, значение по умолчанию – пустая строка.

В следующем примере показана установка некоторых необязательных аргументов:

C#
string result = await DisplayPromptAsync("Question 2", "What's 5 + 5?", initialValue: "10", maxLength: 2, keyboard: Keyboard.Numeric);

Этот код отображает предопределенный ответ 10, ограничивает количество вводимых символов до 2 и отображает цифровую клавиатуру для ввода пользователем:

Предупреждение. По умолчанию в UWP при отображении подсказки все ключи доступа, определенные на странице за подсказкой, могут быть активированы.

Материалы по теме