Sprawdzanie właściwości XAML podczas debugowania
Możesz uzyskać widok w czasie rzeczywistym działającego kodu XAML przy użyciu dynamicznego drzewa wizualnego i Eksploratora właściwości na żywo. Te narzędzia udostępniają widok drzewa elementów interfejsu użytkownika uruchomionej aplikacji XAML i przedstawiają właściwości środowiska uruchomieniowego dowolnego wybranego elementu interfejsu użytkownika.
Możesz użyć tych narzędzi w następujących konfiguracjach:
Typ aplikacji | System operacyjny i narzędzia |
---|---|
Aplikacje Windows Presentation Foundation (4.0 lub nowsze) | System Windows 7 lub nowszy |
Aplikacje uniwersalne systemu Windows | System Windows 10 lub nowszy z zestawem Windows 10 SDK lub nowszym |
Wieloplatformowe aplikacje interfejsu użytkownika aplikacji platformy .NET | System Windows 10 lub nowszy, .NET 8 i nowsze wersje, Visual Studio 2022 17.9 lub nowszy |
Przyjrzyj się elementom w dynamicznym drzewie wizualnym
Zacznijmy od bardzo prostej aplikacji WPF, która ma widok listy i przycisk. Za każdym razem, gdy klikniesz przycisk, do listy zostanie dodany inny element. Elementy numerowane parzyste są kolorami szarymi, a elementy numerowane nieparzyste są kolorami żółtymi.
Tworzenie projektu
Utwórz nową aplikację WPF języka C# (Plik>nowy>projekt, wpisz "C# WPF", wybierz szablon projektu aplikacji WPF, nadaj projektowi nazwę TestXAML, a następnie sprawdź, czy poprawna wersja platformy .NET jest wyświetlana na liście rozwijanej Platforma docelowa).
Zmień plik MainWindow.xaml na następujący:
<Window x:Class="TestXAML.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TestXAML" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Button x:Name="button" Background="LightBlue" Content="Add Item" HorizontalAlignment="Left" Margin="216,206,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/> <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Margin="205,80,0,0"/> </Grid> </Window>
Dodaj następującą procedurę obsługi poleceń do pliku MainWindow.xaml.cs:
int count; private void button_Click(object sender, RoutedEventArgs e) { ListBoxItem item = new ListBoxItem(); item.Content = "Item" + ++count; if (count % 2 == 0) { item.Background = Brushes.LightGray; } else { item.Background = Brushes.LightYellow; } listBox.Items.Add(item); }
Skompiluj projekt i rozpocznij debugowanie. (Konfiguracja kompilacji musi być debugowania, a nie wydania. Aby uzyskać więcej informacji na temat konfiguracji kompilacji, zobacz Understanding Build Configurations (Omówienie konfiguracji kompilacji).
Po wyświetleniu okna powinien zostać wyświetlony pasek narzędzi w aplikacji w uruchomionej aplikacji.
Teraz kliknij przycisk Dodaj element kilka razy, aby dodać nowe elementy do listy.
Sprawdzanie właściwości XAML
Następnie otwórz okno Dynamiczne drzewo wizualne, klikając lewy przycisk paska narzędzi w aplikacji (lub przechodząc do pozycji Debugowanie > drzewa wizualnego usługi Windows > Live). Po otwarciu przeciągnij go z dala od położenia dokowania, abyśmy mogli przyjrzeć się temu oknie i okno Właściwości na żywo obok siebie.
W oknie Live Visual Tree (Dynamiczne drzewo wizualne) rozwiń węzeł ContentPresenter. Powinien zawierać węzły przycisku i pola listy. Rozwiń pole listy (a następnie element ScrollContentPresenter i ItemsPresenter), aby znaleźć elementy pola listy.
Jeśli nie widzisz węzła ContentPresenter , przełącz ikonę Pokaż tylko mój kod XAML na pasku narzędzi. Począwszy od programu Visual Studio 2019 w wersji 16.4, widok elementów XAML jest domyślnie uproszczony przy użyciu funkcji Just My XAML. To ustawienie można również wyłączyć w opcjach, aby zawsze wyświetlać wszystkie elementy XAML.
Okno powinno wyglądać następująco:
Wróć do okna aplikacji i dodaj jeszcze kilka elementów. W dynamicznym drzewie wizualnym powinno zostać wyświetlonych więcej elementów pola listy.
Teraz przyjrzyjmy się właściwościom jednego z elementów pola listy.
Wybierz pierwszy element pola listy w dynamicznym drzewie wizualnym i kliknij ikonę Pokaż właściwości na pasku narzędzi. Powinien zostać wyświetlony Eksplorator właściwości na żywo. Należy pamiętać, że pole Zawartość to "Item1", a pole Kolor tła>jest #FFFFFFE0.
Wróć do dynamicznego drzewa wizualnego i wybierz drugi element pola listy. Eksplorator właściwości na żywo powinien pokazać, że pole Zawartość ma wartość "Item2", a pole Kolor tła>jest #FFD3D3D3 (w zależności od motywu).
Uwaga
Żółte obramowanie wokół właściwości w Eksploratorze właściwości live oznacza, że wartość właściwości jest ustawiana za pomocą powiązania, takiego jak
Color = {BindingExpression}
. Zielona krawędź oznacza, że wartość jest ustawiana przy użyciu zasobu, takiego jakColor = {StaticResource MyBrush}
.Rzeczywista struktura kodu XAML zawiera wiele elementów, których prawdopodobnie nie interesujesz się bezpośrednio, a jeśli nie znasz dobrze kodu, możesz mieć trudności z poruszaniem się po drzewie, aby znaleźć szukane elementy. Dlatego dynamiczne drzewo wizualne ma kilka sposobów, które umożliwiają użycie interfejsu użytkownika aplikacji w celu ułatwienia znalezienia elementu, który chcesz zbadać.
Wybierz pozycję Element w uruchomionej aplikacji. Ten tryb można włączyć po wybraniu tego przycisku na pasku narzędzi Live Visual Tree . W tym trybie można wybrać element interfejsu użytkownika w aplikacji, a dynamiczne drzewo wizualne (i podgląd właściwości na żywo) automatycznie aktualizuje, aby wyświetlić węzeł w drzewie odpowiadającym temu elementowi i jego właściwościom. Począwszy od programu Visual Studio 2019 w wersji 16.4, można skonfigurować zachowanie zaznaczenia elementu.
Wyświetl moduły adoratorów układu w uruchomionej aplikacji. Ten tryb można włączyć po wybraniu przycisku, który znajduje się natychmiast po prawej stronie przycisku Wybierz element... . Gdy moduły układów wyświetlania są włączone, powoduje to, że okno aplikacji wyświetla linie poziome i pionowe wzdłuż granic wybranego obiektu, dzięki czemu można zobaczyć, do czego jest wyrównany, a także prostokąty pokazujące marginesy. Na przykład włącz opcję Wybierz element i Układ wyświetlania, a następnie wybierz blok tekstowy Dodaj element w aplikacji. Węzeł bloku tekstu powinien być widoczny w dynamicznym drzewie wizualnym i we właściwościach bloku tekstu w Podglądzie właściwości na żywo, a także poziomych i pionowych linii na granicach bloku tekstu.
Track Focused, element. Możesz włączyć ten tryb, wybierając ten przycisk na pasku narzędzi Live Visual Tree. W tym trybie jest wyświetlany kod XAML, w którym zadeklarowano element, jeśli masz dostęp do kodu źródłowego aplikacji. Wybierz pozycję Wybierz element i Śledź element skoncentrowany, a następnie wybierz przycisk w naszej aplikacji testowej. Plik MainWindow.xaml zostanie otwarty w programie Visual Studio, a kursor znajduje się w wierszu, w którym jest zdefiniowany przycisk.
Używanie narzędzi XAML z uruchomionymi aplikacjami
Tych narzędzi XAML można używać nawet wtedy, gdy nie masz kodu źródłowego. Po dołączeniu do uruchomionej aplikacji XAML możesz również użyć dynamicznego drzewa wizualnego w elementach interfejsu użytkownika tej aplikacji. Oto przykład użycia tej samej aplikacji testowej WPF, która była używana wcześniej.
Uruchom aplikację TestXaml w konfiguracji wydania. Nie można dołączyć do procesu uruchomionego w konfiguracji debugowania .
Otwórz drugie wystąpienie programu Visual Studio i kliknij pozycję Debuguj > dołączanie do procesu. Znajdź plik TestXaml.exe na liście dostępnych procesów, a następnie kliknij przycisk Dołącz.
Aplikacja zostanie uruchomiona.
W drugim wystąpieniu programu Visual Studio otwórz dynamiczne drzewo wizualne (Debugowanie > drzewa wizualnego Windows > Live). Powinny zostać wyświetlone elementy interfejsu użytkownika TestXaml i powinno być możliwe manipulowanie nimi tak jak podczas bezpośredniego debugowania aplikacji.
Powiązana zawartość
Pisanie i debugowanie uruchomionego kodu XAML przy użyciu Przeładowywanie na gorąco XAML