Udostępnij za pośrednictwem


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 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 refleksji, edytor XAML nie zawsze jest w stanie ich przechwycić, więc kompilacja mimo to zakończy się powodzeniem. 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ż znajdują się w nich inne informacje debugowania, które przesuwają błędy powiązań poza widok. Oto przykład błędu powiązania WPF w oknie wyjściowym debugowania:

Zrzut ekranu przedstawiający okno danych wyjściowych zawierające błąd powiązania.

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.

Zrzut ekranu przedstawiający okno narzędzia Błędy powiązań XAML.

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

Zrzut ekranu przedstawiający przykładowe powiązania w edytorze XAML.

Okno narzędzia do błędów powiązań XAML

Okno narzędzia Błędy wiązań XAML jest dostępne podczas debugowania. Aby go otworzyć, przejdź do Debug>Windows XAML Binding Failures>.

Zrzut ekranu przedstawiający opcję Błędy powiązań XAML w menu Debugowanie.

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

Zrzut ekranu przedstawiający przycisk niepowodzenia powiązań na pasku narzędzi w aplikacji.

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.

Zrzut ekranu ukazujący pasek narzędzi w aplikacji oraz przycisk błędów powiązań bez żadnych wystąpień.

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

Zrzut ekranu przedstawiający przycisk błędów powiązań w oknie narzędzia Live Visual Tree.

Poniżej przedstawiono opis wszystkich komponentów okna narzędzia 'Błędy powiązań XAML'.

Zrzut ekranu okna narzędzia do śledzenia błędów powiązań XAML.

  • Pasek narzędzi w górnej części zawiera przyciski w następujący sposób:
    • Wyczyść listę błędów: jest to przydatne, jeśli zamierzasz wyświetlić nową stronę w aplikacji i sprawdzić, czy pojawią się jakiekolwiek błędy powiązań. Po rozpoczęciu nowej sesji debugowania lista zostanie automatycznie wyczyszczona.
    • 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ę.
    • Połącz duplikaty: Często to samo powiązanie kończy się niepowodzeniem wiele razy z rzędu, 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 błędów 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 {Binding} w języku XAML nie powiodło się. 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
    • target: 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, wierszi Projekt: jeśli lokalizacja jest znana, jest to miejsce w języku XAML, w którym 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 tekst z jednej kolumny 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.
    • Resetowanie kolumn przywróci wszystkie zmiany w widoczności i sortowaniu kolumn, umożliwiając szybki powrót do tego, jak było pierwotnie pokazane.

Aby posortować listę, kliknij dowolny nagłówek kolumny. Aby ponownie posortować według dodatkowej kolumny, przytrzymaj wciśnięty 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 Enter, aby przejść do źródła, możesz nacisnąć F8 lub Shift+F8, aby przejść w dół lub w górę przez listę 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 niepowodzenia powiązań są rejestrowane w wynikach debugowania. Niektóre platformy udostępniają dodatkowe informacje źródłowe do debugera, który umożliwia przechodzenie do źródła.

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

Opcja Gorące Przeładowanie XAML musi być włączona w programie Visual Studio, aby nawigowanie do źródła działało. Ta opcja znajduje się w Narzędzia>Opcje>oknie dialogowym Debugowanie:

zrzut ekranu przedstawiający okno dialogowe opcji szybkiego przeładowywania XAML.

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 pozwalają na przejście do źródła. Jeśli w drugiej kolumnie nie ma ikony nawiasu ostrokątnego, przejście do źródła nie jest obsługiwane, jak na wyróżnionym wierszu na zrzucie ekranu poniżej:

Zrzut ekranu przedstawiający błąd powiązania XAML bez lokalizacji źródłowej.

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 znajduje się w oknie dialogowym Tools>Options>Debugowanie>Okno wyjścia>ustawienia śledzenia WPF. Jeśli ustawienie to Wyłączone lub Krytyczne, błędy wiązania danych nie są zapisywane w wynikach debugowania i nie można ich wykryć. W przypadku WPF na platformach .NET 5, .NET 6 i późniejszych, ustawienie wyjściowe powiązania danych nie ma wpływu na listę niepowodzeń.

Zrzut ekranu przedstawiający opcje danych wyjściowych WPF.