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
Semplificare il deployment di siti statici con Azure Static Web App
Utilizzare Tailwind CSS all'interno di React: primi componenti
Generare token per autenicarsi sulle API di GitHub
Utilizzare il trigger SQL con le Azure Function
Definire stili a livello di libreria in Angular
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Miglioramenti agli screen reader e al contrasto in Angular
Load test di ASP.NET Core con k6
Elencare le container images installate in un cluster di Kubernetes
Hosting di componenti WebAssembly in un'applicazione Blazor static
Aggiungere interattività lato server in Blazor 8
Recuperare un elemento inserito nella cache del browser tramite API JavaScript