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

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

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

Task DisplayAlert (string title, string message, string cancel) 
Task<bool> DisplayAlert (string title, string message, string accept, string cancel) 
Task<string> DisplayActionSheet (string title, string cancel, 
							string destruction, params string[] buttons)

Используем первую версию:

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

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

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

DisplayAlert в Xamarin Forms

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

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

DisplayActionSheet

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

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

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

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

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

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

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

    private async void AlertButton_Clicked(object sender, EventArgs e)
    {
        var action = await DisplayActionSheet("Поделиться", "Отмена", "Удалить", "Вконтакте", "Твиттер", "Фейсбук");
        actionLabel.Text = action;
    }
}
DisplayActionSheet в Xamarin Forms
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850