Отображение всплывающих элементов

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

Отображение предупреждения

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

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

Диалоговое окно

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

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

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 при отображении оповещений все ключи доступа, определенные на странице с оповещением, по-прежнему могут быть активированы. Дополнительные сведения см. в разделе "Ключи доступа VisualElement" в Windows.

Руководство пользователей с помощью задач

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

Для отображения листа действий в await DisplayActionSheet любом Pageслучае передача меток сообщения и кнопки в виде строк. Этот метод возвращает надпись кнопки, нажатой пользователем. Вот простой пример.

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.

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, передав название и сообщение в качестве string аргументов:

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

Запрос отображается модально:

Снимок экрана: модальный запрос в iOS и Android

Если кнопка "ОК" включена, введенный ответ возвращается в виде string. Если кнопка "Отмена" коснулась, null возвращается.

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

  • title( тип string) — это заголовок, отображаемый в запросе.
  • message(тип string) — это сообщение, отображаемое в запросе.
  • accept( тип string) — это текст для кнопки "Принять". Это необязательный аргумент, значение по умолчанию которого — ОК.
  • cancel( тип string) — это текст для кнопки отмены. Это необязательный аргумент, значение по умолчанию которого — Cancel.
  • placeholder( тип string) — это замещающий текст, отображаемый в запросе. Это необязательный аргумент, значение по умолчанию которого равно null.
  • maxLengthintТип , является максимальной длиной ответа пользователя. Это необязательный аргумент, значение по умолчанию которого равно -1.
  • keyboard( тип Keyboard) — это тип клавиатуры, используемый для ответа пользователя. Это необязательный аргумент, значение по умолчанию которого равно Keyboard.Default.
  • initialValuestringТип , представляет собой предварительно определенный ответ, который будет отображаться, и который можно изменить. Это необязательный аргумент, значение по умолчанию которого является пустым string.

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

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

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

Снимок экрана: необязательный модальный запрос в iOS и Android

Предупреждение

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