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
Ottimizzare le performance usando Span<T> e il metodo Split
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Gestione degli stili CSS con le regole @layer
Collegare applicazioni server e client con .NET Aspire
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare i variable font nel CSS
Gestire il colore CSS con HWB
Utilizzare l nesting nativo dei CSS
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Selettore CSS :has() e i suoi casi d'uso avanzati
Migliorare la sicurezza dei prompt con Azure AI Studio