Bagikan melalui


MessageDialog Kelas

Definisi

Mewakili dialog untuk menampilkan pesan kepada pengguna.

Di aplikasi desktop, sebelum menggunakan instans kelas ini dengan cara yang menampilkan UI, Anda harus mengaitkan objek dengan handel jendela pemiliknya. Untuk informasi selengkapnya, dan contoh kode, lihat Menampilkan objek UI WinRT yang bergantung pada CoreWindow.

Penting

Anda harus menggunakan MessageDialog hanya saat memutakhirkan aplikasi Universal Windows 8.x yang menggunakan MessageDialog, dan perlu meminimalkan perubahan atau jika aplikasi Anda bukan XAML. Untuk aplikasi XAML baru di Windows 10+, sebaiknya gunakan kontrol ContentDialog sebagai gantinya.

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
Warisan
Object Platform::Object IInspectable MessageDialog
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Contoh berikut menunjukkan cara menambahkan perintah ke dialog pesan dan menampilkannya. Untuk contoh kode lengkap, lihat Sampel dialog pesan.

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

Keterangan

Catatan

Kelas ini tidak lincah, yang berarti Anda perlu mempertimbangkan model utas dan perilaku marshalingnya. Untuk informasi selengkapnya, lihat Threading dan Marshaling (C++/CX) dan Menggunakan objek Windows Runtime di lingkungan multithreaded (.NET).

Dialog memiliki bilah perintah yang dapat mendukung hingga tiga perintah di aplikasi desktop, atau dua perintah di aplikasi seluler. Jika Anda tidak menentukan perintah apa pun, maka perintah default ditambahkan untuk menutup dialog. Dialog meringkas layar di belakangnya, dan memblokir peristiwa sentuh agar tidak diteruskan ke kanvas aplikasi hingga pengguna merespons.

Dialog pesan harus digunakan dengan hemat, dan hanya untuk pesan penting atau pertanyaan sederhana yang harus memblokir alur pengguna. Berikut adalah contoh dialog yang dibuat oleh kode di bagian Contoh .

Dialog pesan dengan dua perintah

Konstruktor

MessageDialog(String)

Menginisialisasi instans baru kelas MessageDialog untuk menampilkan dialog pesan tanpa judul yang dapat digunakan untuk mengajukan pertanyaan sederhana kepada pengguna Anda.

Di aplikasi desktop, sebelum menggunakan instans kelas ini dengan cara yang menampilkan UI, Anda harus mengaitkan objek dengan handel jendela pemiliknya. Untuk informasi selengkapnya, dan contoh kode, lihat Menampilkan objek UI WinRT yang bergantung pada CoreWindow.

Dialog meringkas layar di belakangnya dan memblokir peristiwa sentuhan agar tidak diteruskan ke kanvas aplikasi hingga pengguna merespons.

Dialog pesan harus digunakan dengan hemat, dan hanya untuk pesan penting atau pertanyaan sederhana yang harus memblokir alur pengguna.

MessageDialog(String, String)

Menginisialisasi instans baru kelas MessageDialog untuk menampilkan dialog pesan berjudul yang dapat digunakan untuk mengajukan pertanyaan sederhana kepada pengguna Anda.

Di aplikasi desktop, sebelum menggunakan instans kelas ini dengan cara yang menampilkan UI, Anda harus mengaitkan objek dengan handel jendela pemiliknya. Untuk informasi selengkapnya, dan contoh kode, lihat Menampilkan objek UI WinRT yang bergantung pada CoreWindow.

Properti

CancelCommandIndex

Mendapatkan atau mengatur indeks perintah yang ingin Anda gunakan sebagai perintah batalkan. Ini adalah perintah yang diaktifkan saat pengguna menekan tombol ESC.

Tambahkan perintah sebelum Anda mengatur indeks.

Commands

Mendapatkan array perintah yang muncul di bilah perintah dialog pesan. Perintah ini membuat dialog dapat ditindakkan.

Dapatkan array ini dan tambahkan objek UICommand yang mewakili perintah Anda ke dalamnya. Jika dialog saat ini ditampilkan, perintah tidak ditambahkan ke bilah perintah.

Content

Mendapatkan atau mengatur pesan yang akan ditampilkan kepada pengguna.

DefaultCommandIndex

Mendapatkan atau mengatur indeks perintah yang ingin Anda gunakan sebagai default. Ini adalah perintah yang diaktifkan secara default saat pengguna menekan tombol ENTER.

Tambahkan perintah sebelum Anda mengatur indeks.

Options

Mendapatkan atau mengatur opsi untuk MessageDialog.

Title

Mendapatkan atau mengatur judul untuk ditampilkan pada dialog, jika ada.

Metode

ShowAsync()

Memulai operasi asinkron yang menunjukkan dialog.

Berlaku untuk

Lihat juga