In WinRT abbiamo a disposizione la classe MessageDialog (namespace Windows.UI.Popups) per visualizzare popup modali, in linea con il design e la user experience di Windows 8.
Come le consuete finestre modali, con MessageDialog possiamo informare l'utente con un titolo e un messaggio ma possiamo anche richiedere un'esplicita risposta ad una domanda con un insieme di tre pulsanti.
Nello snippet seguente possiamo vedere il suo semplice utilizzo:
var dialog = new MessageDialog("contenuto", "titolo");
IAsyncOperation<IUICommand> cmd = dialog.ShowAsync();
Come possiamo vedere nell'immagine, nell'utilizzo di base viene mostrato automaticamente un solo pulsante necessario per la scomparsa della finestra modale.
Oltre a questa funzionalità abbiamo la possibilità di mostrare tre pulsanti personalizzati, aggiungendo oggetti UICommand alla collezione Commands.
Negli oggetti UICommand possiamo impostare direttamente nel costruttore l'etichetta e il delegato che viene richiamato alla pressione del pulsante corrispondente, come possiamo vedere nello snippet seguente.
dialog.Options = MessageDialogOptions.AcceptUserInputAfterDelay;
dialog.Commands.Add(new UICommand("Si", (args) =>
{
//args è direttamente UICommand
}));
dialog.Commands.Add(new UICommand("No", (args) => { }));
dialog.Commands.Add(new UICommand("Annulla", (args) => { }));
dialog.DefaultCommandIndex = 0;
dialog.CancelCommandIndex = 2;
Con la proprietà DefaultCommandIndex andiamo ad impostare l'UICommand che viene attivato alla pressione del pulsante Invio, attraverso l'indice relativo alla collezione Commands. In modo analogo la proprietà CancelCommandIndex imposta quello corrispondente alla pressione del pulsante Esc della tastiera.
Una nota sulla proprietà Options: ad essa possiamo assegnare MessageDialogOptions.AcceptUserInputAfterDelay per ritardare l'attivazione dei pulsanti della modale.
La modale si attiva richiamando il metodo ShowAsync, che restituisce un oggetto di tipo IAsyncOperation. Grazie a questo oggetto abbiamo la possibilità di chiudere programmaticamente la MessageDialog richiamando il metodo Cancel.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare un clone parziale di un repository di GitHub
Keynote Global Azure 2026 - ASPItalia.com
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
DevSecOps per .NET: dalla teoria alla pratica
Diagnosticare e monitorare Azure con Azure MCP Server
Utilizzare i command service nei test con .NET Aspire
Nuova modale riconnessione Blazor
Operazioni tra insiemi di array in Javascript
Eseguire i pre-commit hook di git con dependabot
Caching risposte AI con Microsoft.Extensions.AI
Personalizzare i parametri del CSS Scroll Snap
Blue/Green Release in locale con .NET Aspire
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2026 - Milano
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- "Microsoft Agent Framework: dai i superpoteri alla tua app!" con Alessio Bianchini e Moreno Gentili. Flussi agentici, dati aziendali e strumenti C#. .NET Conference Italia 2026, 18 novembre a Milano. Registrazione gratuita. #dotnet https://aspit.co/netconf-26


