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
- Наследование
- Атрибуты
Требования к 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() |
Начинает асинхронную операцию, показывающую диалоговое окно. |