Поделиться через


MessageDialog Класс

Определение

Представляет диалоговое окно для отображения сообщений пользователю.

В классическом приложении перед использованием экземпляра этого класса таким образом, чтобы отображать пользовательский интерфейс, необходимо связать объект с дескриптором окна владельца. Дополнительные сведения и примеры кода см. в статье Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow.

Важно!

MessageDialog следует использовать только при обновлении универсального приложения Для Windows 8.x, которое использует MessageDialog и которое должно свести к минимуму изменения или если ваше приложение не является XAML. Для новых приложений XAML в Windows 10 и более поздних версий рекомендуется использовать элемент управления ContentDialog .

public ref class MessageDialog sealed
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Popups.IMessageDialogFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
class MessageDialog final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Popups.IMessageDialogFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class MessageDialog final
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Popups.IMessageDialogFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
public sealed class MessageDialog
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Popups.IMessageDialogFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MessageDialog
function MessageDialog(content, title)
Public NotInheritable Class MessageDialog
Наследование
Object Platform::Object IInspectable MessageDialog
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

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

using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using SDKTemplate;
using System;

private async void CancelCommandButton_Click(object sender, RoutedEventArgs e)
{
    // Create the message dialog and set its content
    var messageDialog = new MessageDialog("No internet connection has been found.");

    // Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers
    messageDialog.Commands.Add(new UICommand(
        "Try again", 
        new UICommandInvokedHandler(this.CommandInvokedHandler)));
    messageDialog.Commands.Add(new UICommand(
        "Close", 
        new UICommandInvokedHandler(this.CommandInvokedHandler)));

    // Set the command that will be invoked by default
    messageDialog.DefaultCommandIndex = 0;

    // Set the command to be invoked when escape is pressed
    messageDialog.CancelCommandIndex = 1;

    // Show the message dialog
    await messageDialog.ShowAsync();
}

private void CommandInvokedHandler(IUICommand command)
{
    // Display message showing the label of the command that was invoked
    rootPage.NotifyUser("The '" + command.Label + "' command has been selected.", 
        NotifyType.StatusMessage);
}
// MainPage.cpp
#include "pch.h"
#include "MainPage.h"

#include <winrt/Windows.UI.Popups.h>

#include "winrt/Windows.System.h"
#include "winrt/Windows.UI.Xaml.Controls.h"
#include "winrt/Windows.UI.Xaml.Input.h"
#include "winrt/Windows.UI.Xaml.Navigation.h"
#include <sstream>

using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::UI::Xaml;
...
void MainPage::CancelCommandButton_Click(IInspectable const&, RoutedEventArgs const&)
{
    // Create the message dialog and set its content
    Windows::UI::Popups::MessageDialog msg{ L"No internet connection has been found." };

    // Add commands and set their callbacks.
    // Both commands use the same callback function instead of inline event handlers.
    Windows::UI::Popups::UICommand continueCommand{
        L"Try again",
        { this, &MainPage::CommandInvokedHandler} };
    Windows::UI::Popups::UICommand upgradeCommand{
        L"Close",
        { this, &MainPage::CommandInvokedHandler } };

    // Add the commands to the dialog.
    msg.Commands().Append(continueCommand);
    msg.Commands().Append(upgradeCommand);

    // Set the command that will be invoked by default.
    msg.DefaultCommandIndex(0);

    // Set the command to be invoked when escape is pressed.
    msg.CancelCommandIndex(1);

    // Show the message dialog.
    msg.ShowAsync();
}

void MainPage::CommandInvokedHandler(Windows::UI::Popups::IUICommand const& command)
{
    // Display message.
    std::wstringstream stringstream;
    stringstream << L"The '" << command.Label().c_str() << L"' command has been selected.";
    rootPage.NotifyUser(stringstream.str().c_str(), NotifyType::StatusMessage);
}
#include "pch.h"
#include "CancelCommand.xaml.h"

using namespace MessageDialogSample;

using namespace Windows::UI::Popups;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Navigation;

void MessageDialogSample::CancelCommand::CancelCommandButton_Click(Platform::Object^ sender,
    Windows::UI::Xaml::RoutedEventArgs^ e)
{
    // Create the message dialog and set its content
    MessageDialog^ msg = ref new MessageDialog("No internet connection has been found.");

    // Add commands and set their callbacks.
    // Both commands use the same callback function instead of inline event handlers.
    UICommand^ continueCommand = ref new UICommand(
        "Try again", 
        ref new UICommandInvokedHandler(this, &CancelCommand::CommandInvokedHandler));
    UICommand^ upgradeCommand = ref new UICommand(
        "Close", 
        ref new UICommandInvokedHandler(this, &CancelCommand::CommandInvokedHandler));

    // Add the commands to the dialog
    msg->Commands->Append(continueCommand);
    msg->Commands->Append(upgradeCommand);

    // Set the command that will be invoked by default
    msg->DefaultCommandIndex = 0;

    // Set the command to be invoked when escape is pressed
    msg->CancelCommandIndex = 1;

    // Show the message dialog
    msg->ShowAsync();
}

void CancelCommand::CommandInvokedHandler(Windows::UI::Popups::IUICommand^ command)
{
    // Display message
    rootPage->NotifyUser("The '" + command->Label + "' command has been selected.", 
        NotifyType::StatusMessage);
}
Imports Windows.UI.Popups
Imports Windows.UI.Xaml
Imports Windows.UI.Xaml.Controls
Imports Windows.UI.Xaml.Navigation
Imports SDKTemplate

Partial Public NotInheritable Class CloseCommand
    Inherits SDKTemplate.Common.LayoutAwarePage

    ' A pointer back to the main page.  This is needed if you want to call methods in MainPage such
    ' as NotifyUser()
    Private rootPage As MainPage = MainPage.Current

    Public Sub New()
        Me.InitializeComponent()
    End Sub

    Private Async Sub CloseCommandLaunch_Click(sender As Object, e As RoutedEventArgs)
        ' Create the message dialog and set its content and title
        Dim messageDialog = New MessageDialog("No internet connection has been found.")

        ' Add buttons and set their callbacks
        messageDialog.Commands.Add(New UICommand("Try again", Sub(command)
            rootPage.NotifyUser("The '" & command.Label & "' button has been selected.", _ 
                NotifyType.StatusMessage)
                                                              End Sub))

        messageDialog.Commands.Add(New UICommand("Close", Sub(command) 
            rootPage.NotifyUser("The '" & command.Label & "' button has been selected.", _
                NotifyType.StatusMessage)
                                                          End Sub))

        ' Set the command that will be invoked by default
        messageDialog.DefaultCommandIndex = 0

        ' Set the command to be invoked when escape is pressed
        messageDialog.CancelCommandIndex = 1

        ' Show the message dialog
        Await messageDialog.ShowAsync
    End Sub
End Class

Комментарии

Примечание

Этот класс не является гибким, что означает, что необходимо учитывать его потоковую модель и поведение маршалинга. Дополнительные сведения см. в разделах Потоки и маршалинг (C++/CX) и Использование объектов среда выполнения Windows в многопоточной среде (.NET).

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

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

Диалоговое окно сообщения с двумя командами

Конструкторы

MessageDialog(String)

Инициализирует новый экземпляр класса MessageDialog , чтобы отобразить диалоговое окно без названия, которое можно использовать для отправки пользователю простых вопросов.

В классическом приложении перед использованием экземпляра этого класса таким образом, чтобы отображать пользовательский интерфейс, необходимо связать объект с дескриптором окна владельца. Дополнительные сведения и примеры кода см. в статье Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow.

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

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

MessageDialog(String, String)

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

В классическом приложении перед использованием экземпляра этого класса таким образом, чтобы отображать пользовательский интерфейс, необходимо связать объект с дескриптором окна владельца. Дополнительные сведения и примеры кода см. в статье Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow.

Свойства

CancelCommandIndex

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

Добавьте команды перед настройкой индекса.

Commands

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

Получите этот массив и добавьте в него объекты UICommand , представляющие команды. Если диалоговое окно отображается, команды не добавляются на панель команд.

Content

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

DefaultCommandIndex

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

Добавьте команды перед настройкой индекса.

Options

Возвращает или задает параметры для MessageDialog.

Title

Возвращает или задает заголовок, отображаемый в диалоговом окне, если таковой есть.

Методы

ShowAsync()

Начинает асинхронную операцию, показывающую диалоговое окно.

Применяется к

См. также раздел