La possibilità di creare una nuova finestra con WinRT non è nuova: esiste già da Windows 8, ma, con le applicazioni che giravano solo a schermo intero, questa funzionalità aveva uno scopo limitato.
Per creare una nuova finestra con Windows 10 ci servono due cose fondamentali, cioè l'identificativo della finestra corrente e una nuova finestra.
int mainViewId = ApplicationView.GetApplicationViewIdForWindow(CoreApplication.MainView.CoreWindow); ApplicationView newAppView = null; CoreApplicationView newCoreView = CoreApplication.CreateNewView(); await newCoreView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { newAppView = ApplicationView.GetForCurrentView(); Window.Current.Content = new SecondPage(); Window.Current.Activate(); });
In questo caso siamo andati a creare una nuova ApplicationView, il cui contenuto è una vista chiamata SecondPage: in realtà, potrebbe essere una qualsiasi vista all'interno della nostra applicazione. Dato che viene creata una nuova istanza, potremmo anche passare la stessa view dalla quale creiamo la nuova finestra.
A questo punto non ci rimane che avviare l'istanza appena creata su una nuova finestra:
await ApplicationViewSwitcher.TryShowAsStandaloneAsync( newAppView.Id, ViewSizePreference.Default, mainViewId, ViewSizePreference.Default);
Ed il risultato che otterremo sarà simile al seguente:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare la sicurezza dei prompt con Azure AI Studio
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Code scanning e advanced security con Azure DevOps
Gestire la cancellazione di una richiesta in streaming da Blazor
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Disabilitare automaticamente un workflow di GitHub
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Ottimizzazione dei block template in Angular 17