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