Negli script precedenti abbiamo visto come un'applicazione out-of-browser, in esecuzione con privilegi elevati (full-trust), ci consenta di avere maggiori possibilità di controllo sul layout ed in generale sull'applicazione stessa.
Oltre a WindowState, esposta da Application.Current.MainWindow, abbiamo la possibilià di impostare larghezza, altezza e posizione della finestra rispettivamnetre con le proprietà Width, Height, Left e Top. Il loro utilizzo risulta molto utile per memorizzare posizione e dimensioni della finestra scelte dall'utente, in modo da ripristinarle alla successiva riapertura.
Al momento della chiusura possiamo registrare queste impostazioni nello storage locale attraverso la classe IsolatedStorageSettings:
if (Application.Current.IsRunningOutOfBrowser && Application.Current.HasElevatedPermissions) { bool confirm = MessageBox.Show("Conferma la chiusura?", "", MessageBoxButton.OKCancel) == MessageBoxResult.OK; if (confirm) { IsolatedStorageSettings.ApplicationSettings["MainWidth"] = Application.Current.MainWindow.Width; IsolatedStorageSettings.ApplicationSettings["MainHeight"] = Application.Current.MainWindow.Height; IsolatedStorageSettings.ApplicationSettings["MainLeftPos"] = Application.Current.MainWindow.Left; IsolatedStorageSettings.ApplicationSettings["MainTopPos"] = Application.Current.MainWindow.Top; IsolatedStorageSettings.ApplicationSettings["WindowState"] = Application.Current.MainWindow.WindowState; Application.Current.MainWindow.Close(); } }
Nel costruttorre dello UserControl principale possiamo accedere a tali informazioni ed effettuare il settig dei valori recuperati:
public MainPage() { InitializeComponent(); if (Application.Current.IsRunningOutOfBrowser && Application.Current.HasElevatedPermissions) { WindowState windowState = WindowState.Normal; if (IsolatedStorageSettings.ApplicationSettings.Contains("WindowState")) windowState = (WindowState)IsolatedStorageSettings.ApplicationSettings["WindowState"]; if (windowState != WindowState.Maximized) { if (IsolatedStorageSettings.ApplicationSettings.Contains("MainLeftPos")) Application.Current.MainWindow.Left = (double)IsolatedStorageSettings.ApplicationSettings["MainLeftPos"]; if (IsolatedStorageSettings.ApplicationSettings.Contains("MainTopPos")) Application.Current.MainWindow.Top = (double)IsolatedStorageSettings.ApplicationSettings["MainTopPos"]; if (IsolatedStorageSettings.ApplicationSettings.Contains("MainWidth")) Application.Current.MainWindow.Width = (double)IsolatedStorageSettings.ApplicationSettings["MainWidth"]; if (IsolatedStorageSettings.ApplicationSettings.Contains("MainHeight")) Application.Current.MainWindow.Height = (double)IsolatedStorageSettings.ApplicationSettings["MainHeight"]; } else { Application.Current.MainWindow.WindowState = windowState; } } }
Il setting della posizione può essere fatto solo prima dell'evento Loaded; inoltre, come evidenziato nel codice, qualora il precedente stato della finestra fosse stato Maximized, non è necessario impostare alcuno dei valori memorizzati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Controllare gli accessi IP alle app con Azure Container Apps
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Usare il versioning con i controller di ASP.NET Core Web API
Usare le collection expression per inizializzare una lista di oggetti in C#
Utilizzare le collection expression in C#
Usare le variabili per personalizzare gli stili CSS
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Utilizzare un service principal per accedere a Azure Container Registry
Utilizzare Model as a Service su Microsoft Azure
Eseguire le GitHub Actions offline
Ottimizzazione dei block template in Angular 17
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser