Condividi tramite


MessageDialog Classe

Definizione

Rappresenta una finestra di dialogo per la visualizzazione dei messaggi all'utente.

In un'app desktop, prima di usare un'istanza di questa classe in modo da visualizzare l'interfaccia utente, dovrai associare l'oggetto all'handle della finestra del proprietario. Per altre info ed esempi di codice, vedi Visualizzare gli oggetti dell'interfaccia utente WinRT che dipendono da CoreWindow.

Importante

Devi usare MessageDialog solo quando aggiorni un'app di Windows 8.x universale che usa MessageDialog e devi ridurre al minimo le modifiche o se l'app non è XAML. Per le nuove app XAML in Windows 10+, è consigliabile usare invece il controllo 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
Ereditarietà
Object Platform::Object IInspectable MessageDialog
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Nell'esempio seguente viene illustrato come aggiungere comandi a una finestra di dialogo di messaggio e visualizzarla. Per l'esempio di codice completo, vedere Esempio di finestra di dialogo messaggio.

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

Commenti

Nota

Questa classe non è agile, il che significa che è necessario considerare il modello di threading e il comportamento di marshalling. Per altre informazioni, vedere Threading e marshalling (C++/CX) e Uso di oggetti Windows Runtime in un ambiente multithreading (.NET).

La finestra di dialogo include una barra dei comandi che può supportare fino a tre comandi nelle app desktop o due comandi nelle app per dispositivi mobili. Se non si specificano comandi, viene aggiunto un comando predefinito per chiudere la finestra di dialogo. La finestra di dialogo riduce lo schermo sottostante e blocca il passaggio degli eventi di tocco all'area di disegno dell'app fino a quando l'utente non risponde.

Le finestre di dialogo dei messaggi devono essere usate con moderazione e solo per messaggi critici o domande semplici che devono bloccare il flusso dell'utente. Ecco un esempio di finestra di dialogo creata dal codice nella sezione Esempi .

Finestra di dialogo messaggio con due comandi

Costruttori

MessageDialog(String)

Inizializza una nuova istanza della classe MessageDialog per visualizzare una finestra di dialogo di messaggio senza titolo che può essere usata per porre domande semplici all'utente.

In un'app desktop, prima di usare un'istanza di questa classe in modo da visualizzare l'interfaccia utente, dovrai associare l'oggetto all'handle della finestra del proprietario. Per altre info ed esempi di codice, vedi Visualizzare gli oggetti dell'interfaccia utente WinRT che dipendono da CoreWindow.

La finestra di dialogo riduce lo schermo sottostante e blocca il passaggio degli eventi di tocco all'area di disegno dell'app fino a quando l'utente non risponde.

Le finestre di dialogo dei messaggi devono essere usate con moderazione e solo per messaggi critici o domande semplici che devono bloccare il flusso dell'utente.

MessageDialog(String, String)

Inizializza una nuova istanza della classe MessageDialog per visualizzare una finestra di dialogo di messaggio intitolata che può essere usata per porre domande semplici all'utente.

In un'app desktop, prima di usare un'istanza di questa classe in modo da visualizzare l'interfaccia utente, dovrai associare l'oggetto all'handle della finestra del proprietario. Per altre info ed esempi di codice, vedi Visualizzare gli oggetti dell'interfaccia utente WinRT che dipendono da CoreWindow.

Proprietà

CancelCommandIndex

Ottiene o imposta l'indice del comando che si desidera utilizzare come comando cancel. Questo è il comando che viene attivato quando gli utenti premeno il tasto ESC.

Aggiungere i comandi prima di impostare l'indice.

Commands

Ottiene una matrice di comandi visualizzati nella barra dei comandi della finestra di dialogo del messaggio. Questi comandi rendono il dialogo utilizzabile.

Ottenere questa matrice e aggiungere oggetti UICommand che rappresentano i comandi. Se la finestra di dialogo è attualmente visualizzata, i comandi non vengono aggiunti alla barra dei comandi.

Content

Ottiene o imposta il messaggio da visualizzare all'utente.

DefaultCommandIndex

Ottiene o imposta l'indice del comando che si desidera utilizzare come impostazione predefinita. Questo è il comando che viene attivato per impostazione predefinita quando gli utenti premono INVIO.

Aggiungere i comandi prima di impostare l'indice.

Options

Ottiene o imposta le opzioni per messageDialog.

Title

Ottiene o imposta il titolo da visualizzare nella finestra di dialogo, se presente.

Metodi

ShowAsync()

Avvia un'operazione asincrona che mostra una finestra di dialogo.

Si applica a

Vedi anche