Delen via


XAML-gegevensbindingdiagnostiek

Ontwikkelaars die aan XAML-projecten werken, moeten vaak XAML-gegevensbindingsfouten in hun toepassingen detecteren en oplossen. Er zijn nu hulpprogramma's in Visual Studio 2019 versie 16.8 of hoger en Visual Studio 2022 om deze vervelende fouten in gegevensbinding te vinden tijdens het opsporen van fouten in uw toepassing. Voorbeelden van veelvoorkomende bindingsfouten zijn als volgt:

  • Binding met een eigenschapsnaam die niet bestaat: {Binding Wrong.Name}
  • Binding met een waarde van het verkeerde type, zoals binding met een Booleaanse waarde wanneer een opsomming is vereist: Visibility="{Binding IsVisible}"

Omdat deze bindingen tijdens runtime worden berekend met behulp van weerspiegeling, is de XAML-editor niet altijd in staat om ze te vangen en slaagt uw build nog steeds. De fout treedt alleen op tijdens runtime.

In deze artikelen wordt XAML-gegevensbinding uitgelegd:

Bindingsfouten zijn altijd naar het uitvoervenster voor foutopsporing in Visual Studio geschreven. Maar het is eenvoudig om de bindingsfouten in de uitvoer van foutopsporing te missen, omdat deze andere foutopsporingsgegevens bevat waarmee bindingsfouten buiten beeld worden geschoven. Hier volgt een voorbeeld van een WPF-bindingsfout in het uitvoervenster voor foutopsporing:

Schermopname van het uitvoervenster met een bindingsfout.

De bindingsfout kan zich honderden regels bovenaan het venster bevinden en de tekst vertelt u niet precies welke binding de fout heeft veroorzaakt, dus moet u goed nadenken en zoeken.

In het venster XAML Binding Failures kunt u nu duidelijk zien welke bindingen zijn mislukt, samen met relevante gegevens voor elke fout, zoals de bestandslocatie binnen XAML. Bovendien zijn er veel nuttige functies voor het onderzoeken van de fouten door te zoeken, sorteren en zelfs de XAML-editor te openen met de focus ingesteld op de mislukte binding.

Schermopname van het XAML-bindingsfoutentoolvenster.

Als u dubbelklikt op deze rijen, wordt de bron-XAML voor de binding geopend, zoals wordt weergegeven in de volgende afbeelding:

Schermopname van voorbeeldbindingen in de XAML-editor.

Venster voor XAML-bindingfouten

Het hulpprogrammavenster XAML Binding Failures is beschikbaar tijdens foutopsporing. Als u deze wilt openen, gaat u naar Fouten opsporen>Windows>XAML-bindingsfouten.

Schermopname van de optie XAML-bindingsfouten in het menu Foutopsporing.

Of selecteer de bindingsfouten knop op de werkbalk van de toepassing. Het nummer naast het pictogram laat zien hoeveel bindingsfouten worden weergegeven in het taakvenster.

Schermopname van de werkbalk in de app met de knop Bindingsfouten.

Als er geen bindingsfouten zijn in het taakvenster, wordt het pictogram grijs weergegeven zonder een getal ernaast. Dit is handig bij het uitvoeren van uw toepassing. Als u ziet dat het pictogram rood wordt met een getal, klikt u erop om snel naar het taakvenster te gaan om te zien welke bindingsfouten zijn opgetreden. Het is niet nodig om de vensters van visual studio-hulpprogramma's in de gaten te houden. Wanneer een binding mislukt, geeft het pictogram dat direct aan.

Schermopname van de werkbalk in de app met de knop Bindingsfouten zonder fouten.

Er wordt ook een vergelijkbaar pictogram weergegeven in het venster Live Visual Tree-hulpprogramma.

Schermopname van de knop Bindingsfouten in het venster van het hulpprogramma Live Visual Tree.

Hier volgt een beschrijving van alle onderdelen van het hulpprogramma XAML Binding Failures.

Schermopname van het XAML-bindingsfouten hulpmiddelvenster.

  • De werkbalk bovenaan bevat knoppen als volgt:
    • De lijst met fouten wissen: dit is handig als u een nieuwe pagina in uw app wilt weergeven en wilt zien of er bindingsfouten worden weergegeven. Wanneer u een nieuwe foutopsporingssessie start, wordt de lijst automatisch gewist.
    • Geselecteerde rijen verwijderen: als er een fout is opgelost of niet relevant is, kunt u deze verwijderen uit de lijst. Verwijderde rijen worden opnieuw weergegeven als de binding opnieuw mislukt.
    • Alle filters wissen: als er filters in de lijst staan, zoals het zoeken naar tekst, worden deze door deze knop gewist en wordt de volledige lijst weergegeven.
    • nl-NL: Duplicaten combineren: Dezelfde binding mislukt vaak meerdere keren achter elkaar wanneer deze zich in een itemsjabloon bevindt. Wanneer de knop Duplicaten combineren is geselecteerd (met een overzicht eromheen), worden alle dubbele fouten weergegeven als één rij. In de kolom Aantal wordt weergegeven hoe vaak de fout is opgetreden.
  • In het vak zoekbindingsfouten in de rechterbovenhoek kunt u de fouten filteren op alleen fouten die specifieke tekst bevatten.
  • De kolommen van de tabel laten in volgorde zien:
    • Een pictogram dat aangeeft of de rij betrekking heeft op een fout of waarschuwing.
    • Een pictogram met punthaken <> als u naar de mislukte {Binding} in XAML navigeert, wordt ondersteund. Zie de sectie Ondersteunde platforms.
    • gegevenscontext: dit is de typenaam voor het bronobject van de binding
    • bindingspad: dit is het eigenschapspad voor de binding
    • Doel-: dit is het type en de eigenschapsnaam waar de waarde van de binding wordt ingesteld.
    • doeltype: dit is het verwachte type van de doeleigenschap van de binding.
    • Beschrijving: Deze kolom bevat meer informatie over wat er precies is mislukt bij de binding.
    • File, Lineen Project: Indien bekend, is dit de locatie in XAML waar de binding is gedefinieerd.
  • Als u met de rechtermuisknop op een rij of meerdere geselecteerde rijen klikt, wordt een contextmenu weergegeven, met standaardopties voor het weergeven/verbergen van kolommen of het groeperen ervan. Andere opties zijn als volgt:
    • Kopieer alle tekst uit een rij of slechts één kolom naar het klembord.
    • De oorspronkelijke fout kopiëren kopieert de tekst die wordt weergegeven in het uitvoervenster voor foutopsporing.
    • Bron weergeven zal verwijzen naar de binding in XAML voor één geselecteerde rij.
    • Als u kolommen opnieuw instelt, worden alle wijzigingen in de zichtbaarheid en sortering van kolommen ongedaan gemaakt, zodat u snel kunt teruggaan naar wat er oorspronkelijk is weergegeven.

Als u de lijst wilt sorteren, klikt u op een kolomkop. Als u opnieuw wilt sorteren op een extra kolom, houdt u de Shift--toets ingedrukt en klikt u op een andere kolomkop. Als u wilt selecteren welke kolommen worden weergegeven en welke verborgen zijn, kiest u Kolommen weergeven in het snelmenu. Als u de volgorde wilt wijzigen waarin kolommen worden weergegeven, sleept u een kolomkop naar links of rechts.

Nadat u dubbelklikt op een rij of op Enter- drukt om naar de bron te navigeren, kunt u op F8 of Shift+F8 drukken om omlaag of omhoog te gaan door de lijst met bindingsfouten. Dit is net als andere deelvensters in Visual Studio waarin een lijst wordt weergegeven.

Ondersteunde platforms

De meeste XAML-platformen zijn ondersteund als bindingsfouten naar de debug uitvoer worden geschreven. Sommige platforms leveren extra broninformatie aan het foutopsporingsprogramma waarmee u naar de bron kunt navigeren.

Platform Ondersteund Navigeer naar de bron die wordt ondersteund
WPF .NET Framework Ja Nee
WPF .NET 5.0 RC2+ Ja Ja
UWP Ja Nee
WinUI3-bureaublad Ja Nee
MAUI (Multi-platform App UI) Ja Nee
Xamarin 4.5.0.266-pre3+ Ja Ja
Xamarin vóór 4.5.0.266-pre3 Nee Nee

De optie XAML Hot Reload moet zijn ingeschakeld in Visual Studio om te navigeren naar de bron om te kunnen werken. Deze optie bevindt zich in het dialoogvenster Extra>Opties>Foutopsporing:

Schermafbeelding van het XAML Hot Reload-optie dialoogvenster.

Navigeren naar de bron werkt alleen voor bindingen die zijn gedefinieerd in XAML-bronbestanden, niet als ze worden gemaakt via code. U kunt duidelijk zien welke rijen ondersteuning bieden voor navigeren naar de bron. Als er geen punthaakpictogram in de tweede kolom staat, wordt het navigeren naar de bron niet ondersteund, zoals met de gemarkeerde rij in de volgende schermopname:

schermopname van een XAML-bindingsfout zonder bronlocatie.

Voor WPF in .NET Framework moeten fouten in gegevensbinding worden weergegeven in de foutopsporingsuitvoer voor het deelvenster XAML-bindingsfouten om deze te detecteren en weer te geven. De optie hiervoor bevindt zich in het dialoogvenster Extra>Opties>Foutopsporing>Uitvoervenster>WPF-traceringsinstellingen. Als de instelling Uit of Kritiekeis, worden gegevensbindingsfouten niet weggeschreven naar de debuguitvoer en kunnen ze niet worden gedetecteerd. Met WPF in .NET 5, .NET 6 en hoger heeft de uitvoerinstelling voor gegevensbinding geen invloed op de foutenlijst.

Schermopname van WPF-uitvoeropties.