Skip to content

MxMessageBox

Диалоговое окно MxMessageBox позволяет отображать сообщения и задавать пользователям простые вопросы.

mxmessagebox

MxMessageBox отрисован с использованием тем оформления Eremex. Он поддерживает как светлые, так и темные варианты тем.

Используйте статические перегрузки методов MxMessageBox.Show и MxMessageBox.ShowAsync для отображения диалогового окна.

Показать перегрузки метода

Перегрузки метода MxMessageBox.Show возвращают результат диалогового окна (кнопку, нажатую пользователем). Доступны две перегрузки метода MxMessageBox.Show:

public static MessageBoxResult MxMessageBox.Show(Window? owner, string text, string? title = null, MessageBoxButtons buttons = MessageBoxButtons.Ok, MessageBoxIcon icon = MessageBoxIcon.None, MessageBoxResult defaultButton = MessageBoxResult.None, Action<MxMessageBox>? configure = null)
  • владелец — окно, которому будет принадлежать окно с сообщением. Если этот параметр равен null, MxMessageBox автоматически идентифицирует владельца: владельцем является последнее активное окно или главное окно приложения.
  • текст — текст, который будет отображаться в диалоговом окне.
  • заголовок — Название диалогового окна.
  • кнопки — значение перечисления Eremex.AvaloniaUI.Controls.MessageBoxButtons, которое определяет кнопки для отображения в диалоговом окне. Доступные значения включают: Ok, OkCancel, YesNoCancel, YesNo, AbortRetryIgnore, RetryCancel
  • значок — один из предопределенных значков, отображаемых перед текстом. Задайте свойству значение MessageBoxIcon.None, чтобы скрыть значок.
  • DefaultButton — определяет кнопку по умолчанию. Кнопка по умолчанию - это та, которая изначально фокусируется при отображении диалогового окна. Когда пользователь нажимает ENTER, нажимается кнопка по умолчанию.
  • настроить — делегат для выполнения дополнительной настройки диалогового окна (например, значка диалогового окна в панели заголовка или выравнивания кнопок).

    Пример

    В следующем примере отображается окно сообщения с тремя кнопками - Да, Нет и Отмена.

    mxmessagebox-example

    MessageBoxResult result = MxMessageBox.Show(null, "The document has changed."+ Environment.NewLine+ "Do you want to save the changes?", "Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, MessageBoxResult.Yes);
    if (result == MessageBoxResult.Yes)
    {
        //...
    }
    

Другая перегрузка метода MxMessageBox.Show содержит только один параметр.

public static MessageBoxResult MxMessageBox.Show(Action<MxMessageBox> configure)
  • настроить — делегат для настройки диалогового окна.

    Пример

    mxmessagebox-error-example

    var res = MxMessageBox.Show(configure: msgBox =>
    {
        msgBox.Text = "Error opening the database";
        msgBox.Title = "Error";
        msgBox.Buttons = MessageBoxButtons.Ok;
        msgBox.ButtonAlignment = Avalonia.Layout.HorizontalAlignment.Center;
        msgBox.Window.Icon = new WindowIcon(AssetLoader.Open(new Uri("avares://DemoCenter/Assets/EMXControls.ico")));
    });
    

Перегрузки метода ShowAsync

Вы можете использовать перегрузки метода MxMessageBox.ShowAsync для асинхронного вызова окна сообщения, не блокируя поток пользовательского интерфейса. Методы ShowAsync возвращают объект Task<MessageBoxResult>, представляющий асинхронную операцию. Эта операция завершается, когда пользователь закрывает окно сообщения. Параметры перегрузки метода ShowAsync совпадают с параметрами перегрузки методов Show.

public static Task<MessageBoxResult> ShowAsync(Window? owner, string text, string? title = null, MessageBoxButtons buttons = MessageBoxButtons.Ok, MessageBoxIcon icon = MessageBoxIcon.None, MessageBoxResult defaultButton = MessageBoxResult.None, Action<MxMessageBox>? configure = null)
public static Task<MessageBoxResult> ShowAsync(Action<MxMessageBox> configure)

Пример

В следующем примере окно сообщения отображается асинхронно и ожидает, пока пользователь нажмет кнопку.

async Task<MessageBoxResult> ShowMessageBoxAsync()
{
    Task<MessageBoxResult> resultTask = MxMessageBox.ShowAsync(
        owner: null,
        text: "Are you sure you want to cancel this task?",
        title: "Confirmation",
        buttons: MessageBoxButtons.YesNo,
        icon: MessageBoxIcon.Question
    );

    MessageBoxResult result = await resultTask;

    if (result == MessageBoxResult.Yes)
    {
        await CancelTaskAsync();
    }

    return result;
}

async Task CancelTaskAsync()
{
    await Task.Delay(3000);
}



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.