Nello scenario tipico delle applicazioni desktop che usiamo quotidianamente, solitamente ci viene mostrato un messaggio di conferma quando proviamo a chiuderle ma sono state applicate alcune modifiche e i contenuti non sono ancora stati salvati/applicati. Un esempio classico è l'applicazione Notepad (o Word), in cui viene scritto del testo ma, se si prova a chiudere la finestra senza aver prima salvato su un file, l'operazione di chiusura verrà interrotta da un messaggio che chiederà di salvare su un file i contenuti scritti prima di uscire.
Sulla Universal Windows Platform questo comportamento non era previsto prima dell'arrivo del Windows 10 Creators Update (versione 1703), in quanto poi è stata aggiunta una nuova classe SystemNavigationManagerPreview che espone l'evento CloseRequested:
public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += this.OnCloseRequest; } private void OnCloseRequest(object sender, SystemNavigationCloseRequestedPreviewEventArgs e) { } }
Nell'evento OnCloseRequested si potrà invocare la logica scelta, come, ad esempio, invocare un MessageDialog per richiedere il salvataggio. Si può anche sospendere la chiusura impostando l'argomento e.Handled a true.
Nonostante questo però, l'evento non verrà invocato poiché, per questioni di sicurezza, Microsoft richiede anche l'inserimento di una restricted capability all'interno del file di manifest:
<?xml version="1.0" encoding="utf-8"?> <Package ... xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="... rescap"> ... <Capabilities> <rescap:Capability Name="confirmAppClose"/> </Capabilities> </Package>
Attenzione però a due cose: questa capability richiede di essere la prima tra tutte quelle elencate e, inoltre, essendo di tipo restriced, non verrà approvata per il rilascio dell'applicazione nel Windows Store a meno di particolari condizioni che vanno specificate durante il processo di submission. Nonostante questo, probabilmente lo scenario d'uso sarà più comune per le applicazioni enterprise che richiedono una pubblicazione tramite Intune o sistemi di provisioning similari.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Referenziare un @layer più alto in CSS
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Generare velocemente pagine CRUD in Blazor con QuickGrid
Miglioramenti nelle performance di Angular 16
Migliorare la sicurezza dei prompt con Azure AI Studio
C# 12: Cosa c'è di nuovo e interessante
Le novità di Angular: i miglioramenti alla CLI
Gestire i dati con Azure Cosmos DB Data Explorer
Creare un webhook in Azure DevOps
Eliminare una project wiki di Azure DevOps
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Assegnare un valore di default a un parametro di una lambda in C#
I più letti di oggi
- Build 2015: segui con noi tutte le novità per gli sviluppatori in diretta da San Francisco
- Speciale Windows Live Services: come integrarli nelle proprie applicazioni
- Rilasciata la RTM di SQL Server 2012, la versione Express subito in download
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- .NET Managed provider per MySQL
- WS-I approva Basic Profile 1.0
- Due regali dal Tech-Ed USA 2004: WSE 2.0 e VS 2005 Team System
- VS 2005 e SQL Server 2005 Express da scaricare
- Microsoft aggiorna WinFS beta 1 per VS 2005
- Utilizzare CLEditor per consentire l'input di HTML in ASP.NET MVC