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

Последнее обновление: 22.07.2022

Для создания всплывающих окон в .NET MAUI используются специальные методы, которые определены у объекта Page, а поэтому есть у любой страницы:

Task DisplayAlert (string title, string message, string cancel) 
Task<bool> DisplayAlert (string title, string message, string accept, string cancel) 
Task<bool> DisplayAlert (string title, string message, string accept, string cancel, FlowDirection flowDirection) 
Task<string> DisplayActionSheet (string title, string cancel, 
							string destruction, params string[] buttons)
Task<string> DisplayPromptAsync(string title, string message, string accept = "OK", 
                            string cancel = "Cancel", string placeholder = null, int maxLength = -1, 
                            Keyboard keyboard = null, string initialValue = "");

DisplayAlert

Вначале рассмотрим использование метода DisplayAlert. Используем его первую версию:

namespace HelloApp;

class StartPage : ContentPage
{
    public StartPage()
    {
        Button alertButton = new Button
        {
            Text = "Alert",
            VerticalOptions = LayoutOptions.Start,
            HorizontalOptions = LayoutOptions.Center
        };
        alertButton.Clicked += AlertButton_Clicked;

        Content = alertButton;
    }

    async void AlertButton_Clicked(object sender, EventArgs e)
    {
        await DisplayAlert("Уведомление", "Пришло новое сообщение", "ОK");
    }
}

Первый параметр передает заголовок окна, второй - текст окна, третий - надпись на кнопки отмены.

всплывающие окна и DisplayAlert в .NET MAUI и C#

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

async void AlertButton_Clicked(object sender, EventArgs e)
{
    bool result = await DisplayAlert("Подтвердить действие", "Вы хотите удалить элемент?", "Да", "Нет");
    await DisplayAlert("Уведомление", "Вы выбрали: "+ (result ? "Удалить" : "Отменить"), "OK");
}
Диалоговое окно в .NET MAUI и C#

DisplayActionSheet

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

Метод DisplayActionSheet() принимает следующие параметры:

Task<string> DisplayActionSheet (String title, String cancel, String destruction, params String[] buttons)
  • title: заголовок окна

  • cancel: текст для кнопки отмены. Может быть равен null, если мы хотим скрыть эту кнопку

  • destruction: текст для кнопки удаления. Также для скрытия этой кнопки можно передать значение null

  • buttons: текстовые метки для дополнительных кнопок

namespace HelloApp;

class StartPage : ContentPage
{
    Label actionLabel;
    public StartPage()
    {
        Button alertButton = new Button { Text = "Alert", HorizontalOptions=LayoutOptions.Center };
        alertButton.Clicked += AlertButton_Clicked;
        actionLabel = new Label();
        Content = new StackLayout { Children = { alertButton, actionLabel } };
    }

    async void AlertButton_Clicked(object sender, EventArgs e)
    {
        var action = await DisplayActionSheet("Выбрать язык", "Отмена", "Удалить", "C#", "JavaScript", "Java");
        actionLabel.Text = action;
    }
}
DisplayActionSheet в .NET MAUI и C#

Если нам не нужна какая-то кнопка, например, в примере выше если кнопку Отмены мы можем использовать просто для отмены выбора и закрытия всплывающего сообщения, то кнопка Удалить в данной ситуации не особенно нужна. Поэтому для ее сокрытия вместо ее текста можно использовать null:

var action = await DisplayActionSheet("Выбрать язык", "Отмена", null, "C#", "JavaScript", "Java");

DisplayPromptAsync

Еще один метод - DisplayPromptAsync позволяет ввести данные во всплывающее окно, введенные данные возвращаются методом.

Метод DisplayActionSheet() принимает следующие параметры:

Task<string> DisplayPromptAsync(string title, string message, string accept = "OK", string cancel = "Cancel", string placeholder = null, int maxLength = -1, Keyboard keyboard = null, string initialValue = "");
  • title: заголовок окна

  • message: приглашение к вводу

  • accept: текст для кнопки подтверждения ввода

  • cancel: текст для кнопки отмены. Может быть равен null, если мы хотим скрыть эту кнопку

  • placeholder: текст-заменитель в текстовом поле ввода

  • maxLength: максимальная длина текстового поля ввода

  • keyboard: объект KeyBoard, который устанавливает тип клавиатуры для ввода

  • initialValue: начальное значение в поле ввода

Пример использования:

namespace HelloApp;

class StartPage : ContentPage
{
    Label nameLabel;
    public StartPage()
    {
        Button alertButton = new Button { Text = "Alert", HorizontalOptions=LayoutOptions.Center };
        alertButton.Clicked += AlertButton_Clicked;
        nameLabel = new Label();
        Content = new StackLayout { Children = { alertButton, nameLabel } };
    }

    async void AlertButton_Clicked(object sender, EventArgs e)
    {
        var name = await DisplayPromptAsync("Логин", "Введите имя:", "OK", "Отмена");
        nameLabel.Text = name;
    }
}
диалоговое окно DisplayPromptAsync для ввода данных в .NET MAUI и C#
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850