Diagnostik för XAML-databindning
Utvecklare som arbetar med XAML-projekt måste ofta identifiera och lösa XAML-databindningsfel i sina program. Nu finns det verktyg i Visual Studio 2019 version 16.8 eller senare och Visual Studio 2022 som hjälper dig att hitta dessa irriterande databindningsfel när du felsöker ditt program. Exempel på vanliga bindningsfel är följande:
- Bindning till ett egenskapsnamn som inte finns:
{Binding Wrong.Name}
- Bindning till ett värde av fel typ, till exempel bindning till ett booleskt värde när en uppräkning krävs:
Visibility="{Binding IsVisible}"
Eftersom dessa bindningar beräknas vid körning med hjälp av reflection kan XAML-redigeraren inte alltid upptäcka dem, och bygget kommer ändå att lyckas. Felet inträffar endast vid körning.
XAML-databindning förklaras i följande artiklar:
- För WPF: Översikt över databindning – WPF .NET
- För UWP: översikt över databindning – UWP-program
- För Xamarin.Forms: Xamarin.Forms Data Binding – Xamarin
- För .NET MAUI: .NET MAUI-databindning
Bindningsfel har alltid skrivits till felsökningsutdatafönstret i Visual Studio. Men det är lätt att missa bindningsfelen i felsökningsutdata eftersom det innehåller annan felsökningsinformation som rullar bindningsfel ur vyn. Här är ett exempel på ett WPF-bindningsfel i felsökningsutdatafönstret:
Bindningsfelet kan vara hundratals rader överst i fönstret och texten anger inte exakt vilken bindning som hade felet, så du måste tänka på det och söka.
Nu, med verktygsfönstret XAML-bindningsfel, kan du tydligt se vilka bindningar som har misslyckats, tillsammans med relevanta data för varje fel, till exempel filplatsen i XAML. Dessutom finns det många användbara funktioner för att undersöka felen genom att söka, sortera och till och med öppna XAML-redigeraren med fokus inställt på den misslyckade bindningen.
Om du dubbelklickar på dessa rader öppnas XAML-källan för bindningen, enligt följande bild:
Verktygsfönstret för XAML-bindningsfel
Fönstret XAML-bindningsfel är tillgängligt under felsökningen. Öppna den genom att gå till Felsöka>Windows>XAML-bindningsfel.
Du kan också välja knappen Bindningsfel i programverktygsfältet. Talet bredvid ikonen visar hur många bindningsfel som visas i verktygsfönstret.
När det inte finns några bindningsfel i verktygsfönstret visas ikonen som grå utan ett tal bredvid det. Det här är användbart när du kör programmet. Om du ser ikonen bli röd med ett tal klickar du på den för att snabbt gå till verktygsfönstret för att se vilka bindningsfel som har inträffat. Du behöver inte hålla ett öga på Visual Studio-verktygsfönstren. När en bindning misslyckas meddelar ikonen dig direkt.
En liknande ikon visas också i verktygsfönstret Live Visual Tree.
Följande är en beskrivning av alla komponenter i verktygsfönstret för XAML-bindningsfelverktyg.
- Verktygsfältet längst upp innehåller knappar på följande sätt:
- Rensa listan över fel: Det här är användbart om du ska visa en ny sida i din app och vill se om några bindningsfel visas. När du startar en ny felsökningssession rensas listan automatiskt.
- Ta bort markerade rader: Om ett fel har åtgärdats eller inte är relevant kan du ta bort det från listan. Borttagna rader visas igen om bindningen misslyckas igen.
- Rensa alla filter: Om det finns några filter i listan, till exempel att söka efter text, rensar den här knappen dem och visar hela listan.
- Kombinera dubbletter: Ofta misslyckas samma bindning många gånger i rad när den finns i en objektmall. När knappen Kombinera dubbletter är vald (med markerad kontur runt den) visas alla dubblettfel som en enda rad. Kolumnen Count visar hur många gånger felet inträffade.
- Med rutan Sökbindningsfel i det övre hörnet kan du filtrera felen så att endast de som innehåller viss specifik text visas.
- Tabellkolumnerna i ordning visar:
- En ikon som visar om raden är avsedd för ett fel eller en varning.
- En ikon som visar vinkelparenteser
<>
om navigering till den misslyckade{Binding}
i XAML stöds. Se avsnittet De plattformar som stöds. - Data Context: Det här är typnamnet för bindningens källobjekt
-
Bindningssökväg: Det här är egenskapssökvägen för bindningen
- Se Binding.Path
- Target: Det här är typen och egenskapsnamnet där bindningens värde anges.
- måltyp: Det här är den förväntade typen av bindningens målegenskap.
- Description: Den här kolumnen innehåller mer information om vad som exakt misslyckades för bindningen.
- File, Lineoch Project: Om det är känt är det här platsen i XAML där bindningen definieras.
- Om du högerklickar på en rad eller flera markerade rader visas en snabbmeny med standardalternativ för att visa/dölja kolumner eller gruppera dem. Andra alternativ är följande:
- Kopiera all text från en rad eller bara en enda kolumn till urklipp.
- Kopiera ursprungligt felmeddelande kopierar texten som visades i felsökningsutdata-fönstret.
- Visa källa går till bindningskällan i XAML för en vald rad.
- Återställ kolumner kommer att ångra alla ändringar i kolumnsynlighet och sortering, så att du snabbt kommer tillbaka till det som ursprungligen visades.
Om du vill sortera listan klickar du på valfri kolumnrubrik. Om du vill sortera igen efter en extra kolumn håller du ned tangenten Skift och klickar på en annan kolumnrubrik. Välj vilka kolumner som ska visas och vilka som är dolda genom att välja Visa kolumner på snabbmenyn. Om du vill ändra i vilken ordning kolumner ska visas drar du valfri kolumnrubrik till vänster eller höger.
När du har dubbelklickat på en rad eller tryckt på Retur för att navigera till källan kan du trycka på F8- eller Skift+F8- för att flytta nedåt eller uppåt i listan över bindningsfel. Det här är som andra fönster i Visual Studio som visar en lista.
Plattformar som stöds
De flesta XAML-plattformar stöds om bindningsfel skrivs till debug-utdata. Vissa plattformar tillhandahåller extra källinformation till felsökaren som gör det möjligt att navigera till källan.
Plattform | stöds | Navigera till källa som stöds |
---|---|---|
WPF .NET Framework | Ja | Nej |
WPF .NET 5.0 RC2+ | Ja | Ja |
UWP- | Ja | Nej |
WinUI3 desktop | Ja | Nej |
MAUI (appgränssnitt för flera plattformar) | Ja | Nej |
Xamarin 4.5.0.266-pre3+ | Ja | Ja |
Xamarin före 4.5.0.266-pre3 | Nej | Nej |
Alternativet XAML Hot Reload måste vara aktiverat i Visual Studio för att navigera till källan för att fungera. Det här alternativet finns i dialogrutan Verktyg>Alternativ>Felsökning:
Att navigera till källan fungerar bara för bindningar som definierats i XAML-källfiler, inte om de skapas via kod. Du kan tydligt se vilka rader som stöder navigering till källan. Om det inte finns någon vinkelparentesikon i den andra kolumnen stöds inte navigering till källan, till exempel med den markerade raden i följande skärmbild:
För WPF i .NET Framework måste databindningsfel visas i felsökningsutdata för fönstret XAML-bindningsfel för att identifiera och visa dem. Alternativet för detta finns i dialogrutan Tools>Options>Debugging>Output Window>WPF Trace Settings . Om inställningen är antingen Av eller Kritiskskrivs inte databindningsfel till felsökningsutdata och kan inte upptäckas. Med WPF i .NET 5, .NET 6 och senare påverkar inte databindningsutdatainställningen fellistan.