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.
Questa esercitazione illustra come usare la navigazione e l'associazione dati in un'app WinUI 3 tramite XAML e C#.
In questa esercitazione apprenderai a:
- Abilita
NavigationCacheModeper mantenere la stessa istanza diPagedurante la navigazione. - Implementare l'interfaccia
INotifyPropertyChangedper informare un data binding che i dati sono stati aggiornati. - Trasferire oggetti tra le pagine durante la navigazione.
Questa esercitazione si basa sull'app di esempio WinUI Notes del tutorial Create your first WinUI 3 app. Se l'esercitazione è stata completata, è possibile continuare a usare lo stesso codice. In alternativa, è possibile scaricare il codice completo per tale esercitazione dal repository GitHub e usarlo come punto di partenza per questa esercitazione.
In entrambi i casi, è necessario avere familiarità con i concetti presentati e il codice creato nell'esercitazione Creare la prima app WinUI 3 .
Suggerimento
Puoi anche scaricare o visualizzare il codice completo per questo tutorial nel repository GitHub WinUI Notes part 2. Per visualizzare le differenze tra i punti di inizio e di fine per il progetto, vedere questo commit: aggiornamenti per la parte 2.
Background
Per semplificare e introdurre alcuni concetti fondamentali, l'esercitazione Creare la prima app WinUI 3 è incentrata sulla semplicità sull'efficienza. Quindi, mentre l'app funziona, ci sono alcuni aspetti che possono essere migliorati.
Il problema principale deve avere a che fare con lo spostamento tra le pagine nell'app. Per impostazione predefinita, le istanze di pagina non vengono salvate durante lo spostamento, quindi ogni volta che si passa a un , viene creata una Pagenuova istanza. Nell'app Note di WinUI, l'oggetto notesModel viene creato nel costruttore AllNotesPage e viene popolato leggendo tutte le note dal file system.
public sealed partial class AllNotesPage : Page
{
private AllNotes notesModel = new AllNotes();
...
}
Ogni volta che si passa da NotePage a AllNotesPage, notesModel viene ricreato e tutte le note vengono rilette dal file system. Questa inefficienza in genere non è evidente in una piccola app di esempio senza molti dati, ma sarebbe inaccettabile in, ad esempio, un'app foto che leggeva migliaia di immagini di grandi dimensioni dal file system.
Per risolvere questo problema, questa esercitazione illustra questi passaggi:
- Per prima cosa, assicurarsi che l'istanza
Pagevenga memorizzata nella cache in modo che, durante la navigazione, venga riutilizzata e non ricreata. - Aggiornare la
Noteclasse in modo che le proprietà associate vengano notificate quando vengono apportate modifiche al testo della nota. - Assicurati che
notesModelvenga aggiornato correttamente con le note salvate o eliminate, poiché non viene ricreato a ogni navigazione.
Suggerimento
Spesso si fa riferimento alla documentazione di riferimento sulle API e alla documentazione concettuale durante la creazione di app di Windows. In questa esercitazione verranno visualizzati i collegamenti inline nel testo e nei gruppi con etichetta "Altre informazioni nella documentazione:". Questi collegamenti sono facoltativi; non è necessario seguirli per completare l'esercitazione. Vengono forniti nel caso in cui si voglia prendere nota della posizione in cui trovare le informazioni necessarie quando si inizia a creare app personalizzate.