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
Realizzare un accordion con gli elementi HTML details e summary
Utilizzare il Null conditional assignment di C# 14
Fornire parametri ad un Web component HTML
Rendere affidabile lo scale out su Azure App Service
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Configuratione e utilizzo .NET Aspire CLI
Gestire progetti NPM in .NET Aspire
Gestire gli errori nelle Promise JavaScript con try()
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Impostare automaticamente l'altezza del font tramite CSS
Blazor e Static Web Assets in .NET 10
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata




