Diagnostyka powiązania danych XAML

Deweloperzy, którzy pracują nad projektami XAML, często muszą wykrywać i rozwiązywać błędy powiązań danych XAML w swoich aplikacjach. Teraz istnieją narzędzia w programie Visual Studio 2019 w wersji 16.8 lub nowszej i programie Visual Studio 2022, aby ułatwić znalezienie tych irytujących błędów powiązań danych podczas debugowania aplikacji. Przykłady typowych błędów powiązań są następujące:

  • Powiązanie z nazwą właściwości, która nie istnieje: {Binding Wrong.Name}
  • Powiązanie z wartością nieprawidłowego typu, na przykład powiązanie z wartością logiczną, gdy jest wymagane wyliczenie: Visibility="{Binding IsVisible}"

Ponieważ te powiązania są obliczane w czasie wykonywania przy użyciu odbicia, edytor XAML nie zawsze może je przechwycić, a kompilacja nadal zakończy się pomyślnie. Błąd występuje tylko w czasie wykonywania.

Powiązanie danych XAML zostało wyjaśnione w następujących artykułach:

Błędy powiązań zawsze były zapisywane w oknie danych wyjściowych debugowania w programie Visual Studio. Jednak łatwo jest przegapić błędy powiązań w danych wyjściowych debugowania, ponieważ zawiera inne informacje debugowania, które przewijają błędy powiązań poza widokiem. Oto przykład błędu powiązania WPF w oknie danych wyjściowych debugowania:

Screenshot of the output window containing a binding failure.

Błąd powiązania może zawierać setki wierszy w górnej części okna, a tekst nie informuje o tym, które powiązanie miało błąd, więc należy zastanowić się nad nim i wyszukać.

Teraz przy użyciu okna narzędzia Błędy powiązań XAML można wyraźnie zobaczyć, które powiązania zakończyły się niepowodzeniem, wraz z odpowiednimi danymi dla każdego błędu, na przykład lokalizacji pliku w języku XAML. Ponadto istnieje wiele przydatnych funkcji do badania błędów przez wyszukiwanie, sortowanie, a nawet otwieranie edytora XAML z fokusem ustawionym na powiązanie, które zakończyło się niepowodzeniem.

Screenshot of the XAML Binding Failures tool window.

Dwukrotne kliknięcie tych wierszy powoduje otwarcie źródłowego kodu XAML dla powiązania, jak pokazano na poniższej ilustracji:

Screenshot of example bindings in the XAML editor.

Okno narzędzia Błędy powiązań XAML

Okno narzędzia Błędy powiązań XAML jest dostępne podczas debugowania. Aby go otworzyć, przejdź do pozycji Debugowanie>błędów powiązań XAML systemu Windows.>

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

Możesz też wybrać przycisk Błędy powiązań na pasku narzędzi aplikacji. Numer obok ikony pokazuje, ile błędów powiązań jest wyświetlanych w oknie narzędzia.

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

Jeśli w oknie narzędzia nie występują żadne błędy powiązań, ikona jest wyświetlana jako szara bez liczby obok niej. Jest to przydatne podczas uruchamiania aplikacji. Jeśli zobaczysz, że ikona stanie się czerwona z liczbą, kliknij ją, aby szybko przejść do okna narzędzi, aby zobaczyć, jakie błędy powiązań wystąpiły. Nie ma potrzeby śledzenia okien narzędzi programu Visual Studio. Gdy powiązanie zakończy się niepowodzeniem, ikona zostanie wyświetlona od razu.

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

Podobna ikona jest również wyświetlana w oknie narzędzia Live Visual Tree.

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

Poniżej przedstawiono opis wszystkich składników okna narzędzia błędy powiązań XAML.

Screenshot of XAML Binding Failures tool window.

  • Pasek narzędzi w górnej części zawiera przyciski w następujący sposób:
    • Wyczyść listę niepowodzeń: jest to przydatne, jeśli zamierzasz wyświetlić nową stronę w aplikacji i chcesz sprawdzić, czy pojawią się jakiekolwiek błędy powiązań. Po rozpoczęciu nowej sesji debugowania lista zostanie automatycznie wyczyszczone.
    • Usuń wybrane wiersze: jeśli awaria została naprawiona lub nie jest odpowiednia, możesz usunąć ją z listy. Usunięte wiersze zostaną ponownie wyświetlone, jeśli powiązanie nie powiedzie się ponownie.
    • Wyczyść wszystkie filtry: jeśli na liście znajdują się jakiekolwiek filtry, takie jak wyszukiwanie tekstu, ten przycisk wyczyści je i wyświetli pełną listę.
    • Łączenie duplikatów: często to samo powiązanie kończy się niepowodzeniem wiele razy w wierszu, gdy znajduje się w szablonie elementu. Po wybraniu przycisku Połącz duplikaty (z konturem wokół niego) wszystkie zduplikowane błędy są wyświetlane jako pojedynczy wiersz. Kolumna Count (Liczba ) pokaże, ile razy wystąpił błąd.
  • Pole Błędy powiązań wyszukiwania w górnym rogu umożliwia filtrowanie niepowodzeń tylko tych, które zawierają określony tekst.
  • Kolumny tabeli w kolejności pokazują:
    • Ikona, która pokazuje, czy wiersz dotyczy błędu lub ostrzeżenia.
    • Ikona przedstawiająca nawiasy kątowe <> w przypadku przejścia do błędu {Binding} w języku XAML jest obsługiwana. Zobacz sekcję Obsługiwane platformy .
    • Kontekst danych: jest to nazwa typu obiektu źródłowego powiązania
    • Ścieżka powiązania: jest to ścieżka właściwości powiązania
    • Element docelowy: jest to nazwa typu i właściwości, w której zostanie ustawiona wartość powiązania.
    • Typ docelowy: jest to oczekiwany typ właściwości docelowej powiązania.
    • Opis: Ta kolumna zawiera więcej informacji o tym, co dokładnie nie powiodło się dla powiązania.
    • Plik, wiersz i projekt: jeśli jest znany, jest to lokalizacja w języku XAML, w której zdefiniowano powiązanie.
  • Kliknięcie prawym przyciskiem myszy wiersza lub wielu zaznaczonych wierszy spowoduje wyświetlenie menu kontekstowego ze standardowymi opcjami wyświetlania/ukrywania kolumn lub grupowania ich. Inne opcje są następujące:
    • Skopiuj cały tekst z wiersza lub tylko jedną kolumnę do schowka.
    • Skopiowanie oryginalnego błędu spowoduje skopiowanie tekstu wyświetlonego w oknie danych wyjściowych debugowania.
    • Źródło widoku zostanie przekierowane do źródła powiązania w języku XAML dla jednego zaznaczonego wiersza.
    • Resetuj kolumny cofnie wszystkie zmiany widoczności i sortowania kolumn, co pozwala szybko wrócić do tego, co zostało pierwotnie pokazane.

Aby posortować listę, kliknij dowolny nagłówek kolumny. Aby posortować ponownie według dodatkowej kolumny, przytrzymaj wciśnięty klawisz Shift i kliknij inny nagłówek kolumny. Aby wybrać, które kolumny są wyświetlane i które są ukryte, wybierz pozycję Pokaż kolumny z menu skrótów. Aby zmienić kolejność wyświetlania kolumn, przeciągnij dowolny nagłówek kolumny do lewej lub prawej.

Po dwukrotnym kliknięciu wiersza lub naciśnięciu klawisza Enter , aby przejść do źródła, możesz nacisnąć klawisz F8 lub Shift+F8 , aby przejść w dół lub w górę z listy błędów powiązań. Jest to podobne do innych okienek w programie Visual Studio, które pokazują listę.

Obsługiwane platformy

Większość platform XAML jest obsługiwana, jeśli błędy powiązań są zapisywane w danych wyjściowych debugowania. Niektóre platformy udostępniają dodatkowe informacje źródłowe do debugera, który umożliwia przechodzenie do źródła.

Platforma Obsługiwane Przejdź do obsługiwanego źródła
WPF .NET Framework Tak Nie.
WPF .NET 5.0 RC2+ Tak Tak
Platforma UWP Tak Nie.
Pulpit WinUI3 Tak Nie.
MAUI (wieloplatformowy interfejs użytkownika aplikacji) Tak Nie.
Xamarin 4.5.0.266-pre3+ Tak Tak
Xamarin przed 4.5.0.266-pre3 Nie Nie.

Aby przejść do źródła, należy włączyć opcję Przeładowywanie na gorąco XAML w programie Visual Studio. Ta opcja znajduje się w oknie dialogowym Narzędzia>Opcje>debugowania:

Screenshot of the XAML Hot Reload options dialog.

Przechodzenie do źródła działa tylko w przypadku powiązań zdefiniowanych w plikach źródłowych XAML, a nie w przypadku ich tworzenia za pomocą kodu. Możesz wyraźnie zobaczyć, które wiersze obsługują przechodzenie do źródła. Jeśli w drugiej kolumnie nie ma ikony nawiasu kątowego, przejście do źródła nie jest obsługiwane, na przykład przy użyciu wyróżnionego wiersza na poniższym zrzucie ekranu:

Screenshot showing a XAML binding failure without a source location.

W przypadku platformy WPF w programie .NET Framework błędy powiązań danych muszą być wyświetlane w danych wyjściowych debugowania w okienku Błędy powiązań XAML, aby je wykryć i pokazać. Opcja tej opcji znajduje się w oknie dialogowym Narzędzia>Opcje>debugowania>danych wyjściowych okna>śledzenia WPF Ustawienia. Jeśli ustawienie jest wyłączone lub krytyczne, błędy powiązania danych nie są zapisywane w danych wyjściowych debugowania i nie można ich wykryć. W przypadku platformy WPF na platformie .NET 5, .NET 6 i nowszych ustawienie danych wyjściowych powiązania danych nie ma wpływu na listę błędów.

Screenshot of WPF output options.