Condividi tramite


Diagnostica del data binding XAML

Gli sviluppatori che lavorano sui progetti XAML spesso devono rilevare e risolvere gli errori di data binding XAML nelle applicazioni. Sono ora disponibili strumenti in Visual Studio 2019 versione 16.8 o successiva e Visual Studio 2022 per trovare questi fastidiosi errori di data binding durante il debug dell'applicazione. Di seguito sono riportati alcuni esempi di errori di associazione comuni:

  • Associazione a un nome di proprietà che non esiste: {Binding Wrong.Name}
  • Associazione a un valore del tipo errato, ad esempio l'associazione a un valore booleano quando è necessaria un'enumerazione: Visibility="{Binding IsVisible}"

Poiché queste associazioni vengono calcolate in fase di esecuzione tramite reflection, l'editor XAML non è sempre in grado di intercettarli e la compilazione avrà comunque esito positivo. L'errore si verifica solo in fase di esecuzione.

Il data binding XAML è illustrato negli articoli seguenti:

Gli errori di associazione sono sempre stati scritti nella finestra di output di debug in Visual Studio. Tuttavia, è facile perdere gli errori di associazione all'interno dell'output di debug perché contiene altre informazioni di debug che consentono di scorrere gli errori di associazione fuori dalla visualizzazione. Di seguito è riportato un esempio di errore di associazione WPF all'interno della finestra di output di debug:

Screenshot of the output window containing a binding failure.

L'errore di associazione potrebbe essere di centinaia di righe nella parte superiore della finestra e il testo non indica esattamente quale binding ha avuto l'errore, quindi è necessario considerare e cercare.

Ora, con la finestra dello strumento Errori di binding XAML, puoi vedere chiaramente quali associazioni hanno avuto esito negativo, insieme ai dati pertinenti per ogni errore, ad esempio il percorso del file all'interno di XAML. Inoltre, esistono molte funzionalità utili per analizzare gli errori eseguendo ricerche, ordinamenti e anche aprendo l'editor XAML con lo stato attivo impostato sull'associazione non riuscita.

Screenshot of the XAML Binding Failures tool window.

Facendo doppio clic su queste righe viene aperto il codice XAML di origine per l'associazione, come illustrato nell'immagine seguente:

Screenshot of example bindings in the XAML editor.

Finestra degli strumenti Errori associazione XAML

La finestra degli strumenti Errori associazione XAML è disponibile durante il debug. Per aprirlo, passare a Debug errori> di associazione XAML di Windows.>

Screenshot of the XAML Binding Failures option in the Debug menu.

In alternativa, selezionare il pulsante Errori di associazione nella barra degli strumenti dell'applicazione. Il numero accanto all'icona mostra il numero di errori di associazione visualizzati nella finestra degli strumenti.

Screenshot of the in-app toolbar showing the binding failures button.

Quando non sono presenti errori di associazione nella finestra degli strumenti, l'icona viene visualizzata come grigia senza un numero accanto. Questa operazione è utile durante l'esecuzione dell'applicazione. Se l'icona diventa rossa con un numero, fare clic su di essa per passare rapidamente alla finestra degli strumenti per vedere quali errori di binding si sono verificati. Non è necessario tenere d'occhio le finestre degli strumenti di Visual Studio. Quando un binding non riesce, l'icona ti dirà subito.

Screenshot of the in-app toolbar showing the binding failures button with no failures.

Viene visualizzata anche un'icona simile nella finestra degli strumenti Struttura ad albero visuale attiva.

Screenshot of the binding failures button within the Live Visual Tree tool window.

Di seguito è riportata una descrizione di tutti i componenti della finestra degli strumenti Errori binding XAML.

Screenshot of XAML Binding Failures tool window.

  • La barra degli strumenti nella parte superiore contiene i pulsanti come indicato di seguito:
    • Cancella l'elenco degli errori: questo è utile se stai per visualizzare una nuova pagina nella tua app e vuoi vedere se vengono visualizzati errori di binding. Quando si avvia una nuova sessione di debug, l'elenco viene cancellato automaticamente.
    • Elimina righe selezionate: se un errore è stato corretto o non è rilevante, è possibile eliminarlo dall'elenco. Le righe eliminate verranno visualizzate di nuovo se l'associazione ha esito negativo di nuovo.
    • Cancella tutti i filtri: se sono presenti filtri nell'elenco, ad esempio la ricerca di testo, questo pulsante li cancella e visualizza l'elenco completo.
    • Combina duplicati: spesso la stessa associazione avrà esito negativo molte volte in una riga quando si trova all'interno di un modello di elemento. Quando il pulsante Combina duplicati è selezionato (con una struttura intorno a esso), tutti gli errori duplicati vengono visualizzati come una singola riga. La colonna Conteggio mostrerà il numero di volte in cui si è verificato l'errore.
  • La casella Errori binding di ricerca nell'angolo superiore consente di filtrare gli errori solo quelli che contengono testo specifico.
  • Le colonne della tabella, in ordine, mostrano:
    • Icona che mostra se la riga è per un errore o un avviso.
    • Un'icona che mostra le parentesi angolari <> se si passa all'oggetto non riuscito {Binding} in XAML è supportata. Vedere la sezione Piattaforme supportate.
    • Contesto dati: nome del tipo per l'oggetto di origine dell'associazione
    • Percorso di associazione: percorso della proprietà per l'associazione
    • Destinazione: si tratta del tipo e del nome della proprietà in cui verrà impostato il valore dell'associazione.
    • Tipo di destinazione: tipo previsto della proprietà di destinazione dell'associazione.
    • Descrizione: questa colonna contiene altre informazioni sull'errore esatto per l'associazione.
    • File, Riga e Progetto: se noto, si tratta del percorso in XAML in cui è definita l'associazione.
  • Facendo clic con il pulsante destro del mouse su una riga o su più righe selezionate verrà visualizzato un menu di scelta rapida, con opzioni standard per visualizzare/nascondere colonne o raggrupparle. Altre opzioni sono le seguenti:
    • Copiare tutto il testo da una riga o solo una singola colonna negli Appunti.
    • Copy Original Error (Copia errore originale) copia il testo visualizzato nella finestra di output del debug.
    • Visualizza origine passa all'origine di associazione in XAML per una riga selezionata.
    • Reimposta colonne annulla tutte le modifiche apportate alla visibilità e all'ordinamento delle colonne, ripristinando rapidamente ciò che è stato originariamente visualizzato.

Per ordinare l'elenco, fare clic sull'intestazione di una colonna. Per eseguire di nuovo l'ordinamento in base a una colonna aggiuntiva, tenere premuto MAIUSC e fare clic su un'altra intestazione di colonna. Per selezionare le colonne da visualizzare e quelle da nascondere, scegliere Mostra colonne dal menu di scelta rapida. Per modificare l'ordine di visualizzazione delle colonne, trascinare l'intestazione di una colonna verso sinistra o verso destra.

Dopo aver fatto doppio clic su una riga o premere INVIO per spostarsi nell'origine, è possibile premere F8 o MAIUSC+F8 per spostarsi verso il basso o verso l'alto nell'elenco di errori di associazione. Questo è simile ad altri riquadri in Visual Studio che mostrano un elenco.

Piattaforme supportate

La maggior parte delle piattaforme XAML è supportata se gli errori di associazione vengono scritti nell'output di debug. Alcune piattaforme forniscono informazioni di origine aggiuntive al debugger che consente di passare all'origine.

Piattaforma Supportata Passare all'origine supportata
WPF .NET Framework No
WPF .NET 5.0 RC2+
UWP No
Desktop WinUI3 No
MAUI (interfaccia utente dell'app multipiattaforma) No
Xamarin 4.5.0.266-pre3+
Xamarin prima della versione 4.5.0.266-pre3 No No

L'opzione xaml Ricaricamento rapido deve essere abilitata in Visual Studio per passare all'origine da usare. Questa opzione è disponibile nella >finestra di dialogo Strumenti opzioni>debug:

Screenshot of the XAML Hot Reload options dialog.

L'esplorazione all'origine funziona solo per le associazioni definite nei file di origine XAML, non se vengono create tramite codice. È possibile vedere chiaramente quali righe supportano l'esplorazione dell'origine. Se nella seconda colonna non è presente alcuna icona con parentesi angolare, l'esplorazione all'origine non è supportata, ad esempio con la riga evidenziata nello screenshot seguente:

Screenshot showing a XAML binding failure without a source location.

Per WPF in .NET Framework, gli errori di data binding devono essere visualizzati nell'output di debug per il riquadro Errori di associazione XAML per rilevarli e visualizzarli. L'opzione per questa opzione è disponibile nella >finestra di dialogo Strumenti Opzioni>debug>finestra>di output WPF Trace Impostazioni. Se l'impostazione è Disattivata o Critica, gli errori di data binding non vengono scritti nell'output di debug e non possono essere rilevati. Con WPF in .NET 5, .NET 6 e versioni successive, l'impostazione di output del data binding non influisce sull'elenco di errori.

Screenshot of WPF output options.