Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Windows App SDK è la prossima evoluzione della piattaforma di sviluppo Windows app. Questo argomento illustra tuttavia come usare api Windows App SDK (e API di Windows Runtime) in un'app Windows Presentation Foundation (WPF)!
- In molti casi, è consigliabile ricreare l'app WPF sotto forma di app WinUI 3. Solo uno dei vantaggi del passaggio a WinUI consiste nell'avere access al Fluent Design System (vedere anche Design e scrivere il codice delle app di Windows). E WinUI fa parte del Windows App SDK, quindi, naturalmente, un'app WinUI può usare anche le altre funzionalità e API Windows App SDK. Questo argomento non illustra il processo di migrazione dell'app WPF a WinUI.
- Tuttavia, se trovi che usi funzionalità di WPF che non sono ancora disponibili in WinUI, puoi comunque usare le funzionalità di Windows App SDK (ad esempio Ciclo di vita dell'app, MRT Core, DWriteCore e altri) nella tua app WPF. Questo argomento spiega come fare.
Nel caso in cui non si abbia già un WPF project esistente o si vuole praticare il processo, questo argomento include i passaggi per creare un WPF project in modo da poterlo seguire e configurarlo per chiamare le API Windows App SDK.
Prerequisiti
- Installare gli strumenti per il Windows App SDK.
- Questo argomento illustra sia le app non in pacchetto che le app WPF in pacchetto. Se l'app WPF non è confezionata (come le app WPF sono per impostazione predefinita), assicurati che tutte le dipendenze per le app non confezionate siano installate (vedi la guida alla distribuzione di Windows App SDK per le app dipendenti dal framework confezionate con un percorso esterno o non confezionate). Un modo rapido per farlo consiste nel visitare Ultimi download per Windows App SDK, quindi scaricare, decomprimere e eseguire uno dei download delle versioni stabili Download del runtime.
Importante
La versione del Runtime installata deve corrispondere alla versione del pacchetto NuGet Microsoft.WindowsAppSDK che verrà installato in un passaggio successivo.
Per maggiori informazioni sui termini Non inclusi nel pacchetto e inclusi nel pacchetto, vedere Vantaggi e svantaggi della creazione di pacchetti per l'app.
Creare un WPF project se non ne è già disponibile uno
Se si dispone già di un WPF project, è possibile passare alla sezione successiva.
- In Visual Studio creare un nuovo
WPF Application project (ovvero un .NET project). Prestare attenzione a scegliere il modello di progetto con il nome esatto WPF Application e non quello WPF App (.NET Framework). - Assegnare al project un nome e accettare tutte le opzioni predefinite.
È ora disponibile un progetto che compila un'app WPF senza pacchetto.
Configurare il WPF project per il supporto di Windows App SDK
Prima di tutto si modificherà il file project.
In Solution Explorer fare clic con il pulsante destro del mouse sul project e scegliere Edit Project File.
Questo passaggio consente di chiamare api Windows Runtime (WinRT) (incluse Windows App SDK API). All'interno dell'elemento PropertyGroup è presente l'elemento TargetFramework, che viene impostato su un valore come net6.0. Aggiungere a tale valore del framework di destinazione un moniker (in particolare, un Moniker del Framework di Destinazione). Ad esempio, usare quanto segue se l'app è destinata a Windows 10 versione 2004:
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>Inoltre, all'interno dell'elemento PropertyGroup aggiungere un elemento RuntimeIdentifiers, come illustrato di seguito. Se la destinazione è .NET 8 o versione successiva, usare invece il valore
win-x86;win-x64;win-arm64.<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>Per impostazione predefinita, un'app di WPF è unpackaged (ovvero non è installata tramite MSIX). Un'app non in pacchetto deve inizializzare il runtime di Windows App SDK prima di usare qualsiasi altra funzionalità del Windows App SDK. È possibile farlo automaticamente all'avvio dell'app tramite Inizializzazione automatica. È sufficiente impostare (anche all'interno dell'elemento PropertyGroup) la proprietà
WindowsPackageTypeproject in modo appropriato, come illustrato di seguito:<WindowsPackageType>None</WindowsPackageType>Se hai necessità avanzate (ad esempio, la gestione degli errori personalizzata o il caricamento di una versione specifica del Windows App SDK), invece di all'inizializzazione automatica, puoi chiamare esplicitamente l'API del bootstrapper. Per ulteriori informazioni, vedi Usa il runtime di Windows App SDK per app confezionate con posizione esterna o non confezionate.
Salvare e chiudere il file project.
Verrà quindi installato il pacchetto NuGet Windows App SDK nel project.
- In Solution Explorer fare clic con il pulsante destro del mouse sul nodo Dependencies del project e scegliere Gestisci pacchetti NuGet... .
- Nella finestra NuGet Package Manager selezionare la scheda Browse e installare il pacchetto stabile Latest stableMicrosoft.WindowsAppSDK.
Usare alcune funzionalità di Windows App SDK nell'app WPF
Questa sezione offre un esempio molto semplice di chiamata Windows App SDK API da un'app WPF. Usa la funzionalità MRT Core (vedere Gestire le risorse con MRT Core). Se questo esempio funziona per il WPF project e se ne è stato creato uno nuovo per questa procedura dettagliata, sarà possibile seguire questa procedura.
Aggiungere il markup seguente a
MainWindow.xaml(potresti incollarlo all'interno della radice Grid):<StackPanel> <Button HorizontalAlignment="Center" Click="Button_Click">Click me!</Button> <TextBlock HorizontalAlignment="Center" x:Name="myTextBlock">Hello, World!</TextBlock> </StackPanel>A questo punto verrà aggiunto codice che usa la classe ResourceManager nella Windows App SDK per caricare una risorsa stringa.
Aggiungere un nuovo elemento Resources File (.resw) al project (lasciare il nome predefinito di Resources.resw).
Con il file di risorse aperto nell'editor, creare una nuova risorsa di stringa con le proprietà seguenti.
- Nome: Messaggio
- Valore: Hello, resources!
Salvare e chiudere il file di risorse.
In
MainWindow.xaml.cs, aggiungere il seguente gestore eventi:
private void Button_Click(object sender, RoutedEventArgs e) { // Construct a resource manager using the resource index generated during build. var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager(); // Look up a string in the resources file using the string's name. myTextBlock.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString; }Compilare il project ed eseguire l'app. Fare clic sul pulsante per visualizzare la stringa
Hello, resources!visualizzata.
Suggerimento
Se in fase di esecuzione viene visualizzata una finestra di messaggio che indica che l'applicazione richiede una versione specifica del runtime di Windows App e chiede se si vuole installarla ora, fare clic su Yes. Questo ti porterà a Ultimi download per il Windows App SDK. Per altre informazioni, vedere la sezione Prerequisiti di cui sopra.
Vedi anche Architettura runtime per altre informazioni sulla dipendenza dal pacchetto Framework da cui l'app dipende quando utilizza il Windows App SDK, e i componenti aggiuntivi necessari per funzionare in un'app non in pacchetto.
Confeziona e distribuisci la tua app WPF con MSIX
Alcune funzionalità e API di Windows (incluse le API Windows App SDK notifications) richiedono che l'app abbia package identity in fase di esecuzione (in altre parole, l'app deve essere packaged). Per altre informazioni, vedere Funzionalità che richiedono l'identità del pacchetto.
- In Solution Explorer in Visual Studio fare clic con il pulsante destro del mouse sulla soluzione e scegliere Aggiungi>Nuovo Project... .
- Nella finestra di dialogo Aggiungi un nuovo progetto, cercare packaging, scegliere il modello C# Windows Application Packaging Project e fare clic su Avanti.
- Assegnare al project il nome e fare clic su Crea.
- L'intento è di specificare quali applicazioni nella soluzione devono essere incluse nel pacchetto. Quindi nel progetto di creazione del pacchetto (non il progetto WPF), fare clic con il pulsante destro del mouse sul nodo Dependencies e scegliere Aggiungi riferimento al progetto....
- Nell'elenco dei progetti nella soluzione scegliere il WPF project e fare clic su OK.
- Espandi il nodo Dependencies>Applications del progetto e verifica che il progetto WPF sia referenziato ed evidenziato in grassetto. Questo significa che verrà usato come punto di partenza per il pacchetto.
- Fare clic con il pulsante destro del mouse sul progetto di packaging e scegliere Set As Startup Project.
- Fare clic con il pulsante destro del mouse sul WPF project e scegliere Edit Project File.
- Eliminare
<WindowsPackageType>None</WindowsPackageType>, salvare e chiudere. - Nell'elenco a discesa Piattaforme di soluzioni selezionare x64 (invece di Qualsiasi CPU).
- Verificare che sia possibile compilare ed eseguire.
Dopo aver creato un pacchetto dell'app WPF, è possibile chiamare le API che richiedono l'identità del pacchetto. Quindi, in MainWindow.xaml.cs, modificare il gestore eventi in modo che sia simile al seguente:
private void Button_Click(object sender, RoutedEventArgs e)
{
var notification = new AppNotificationBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", "9813")
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.BuildNotification();
AppNotificationManager.Default.Show(notification);
}
Compilare ed eseguire di nuovo. Fare clic sul pulsante e confermare che venga visualizzata una notifica toast. Quando viene chiamato da un processo che non dispone dell'identità del pacchetto in fase di esecuzione, le API di notifica generano un'eccezione.
Nota
I passaggi descritti in questa sezione illustrano come creare un' app inclusa nel pacchetto. Un'alternativa consiste nel creare una app inclusa nel pacchetto con posizione esterna. Per un promemoria di tutte queste condizioni, vedere Vantaggi e svantaggi della creazione di pacchetti dell'app.
Argomenti correlati
- Windows Presentation Foundation (WPF)
- Installare gli strumenti per Windows App SDK
- Guida alla distribuzione di Windows App SDK per le app dipendenti dal framework confezionate con posizione esterna o non confezionate
- Ultimi download per Windows App SDK
- Vantaggi e svantaggi della creazione di pacchetti per l'app
- Usa il runtime di Windows App SDK per le app confezionate con una posizione esterna o non confezionate
- Architettura di runtime
- Funzionalità che richiedono l'identità del pacchetto