Debugowanie aplikacji w Silverlight 5 Udostępnij na: Facebook

Autor: Tomasz Kowalczyk

Opublikowano: 2012-08-13

Jest to kolejna część z cyklu artykułów, które przedstawiają możliwości Silverlight 5. Poniższy tekst pozwoli zapoznać się z jedną z najbardziej oczekiwanych możliwości najnowszego wydania Frameworka – XAML Debugging. Pod tą tajemniczą nazwą kryje się możliwość stawiania breakpointów w plikach z rozszerzeniem *.xaml, podczas debugowania aplikacji.

Po przeczytaniu tego artykułu dowiesz się:

  • co to jest XAML Debugging,
  • jak ustawiać breakpointy w plikach *.xaml.

Wprowadzenie

Po zapoznaniu się z poprzednim artykułem, zapewne każdy zabrał się z zapałem do pracy i zaczął testować nowe możliwości Bindingu, dostępne w Silverlight 5. Warto zaznaczyć, że w miarę zwiększania się stopnia zaawansowania projektów, mogą pojawić się błędy, które ciężko wykryć, gdyż związane są bezpośrednio z bindowaniem danych, ustawianych jako DataContext w tworzonej aplikacji.

W tej sytuacji, z pomocą przychodzi nam nowa funkcja, dostępna w Silverlight 5 – XAML Debugging, która pozwala stawiać break point, bezpośrednio w plikach *.xaml, i śledzić proces wykonywania instrukcji, tak jak podczas analizowania kodu, zawartego w plikach *.cs.

Informacja
Warto zauważyć, że po zainstalowaniu nowej wersji Silverlight, funkcja XAML Debugging dostępna jest również dla projektów wykonanych w technologii Silverlight 4.

Implementacja

Aby w prosty sposób zobrazować działanie w/w funkcji, utworzona została klasa Webcast.cs, która pozwala powoływać obiekty opisujące Webcasty, dostępne na portalu channel9.msdn.com.

Informacja
Kody źródłowe projektów, utworzonych w ramach artykułów, będą dostępne na tej stronie.

Kod źródłowy opisywanej klasy przedstawiony został poniżej:

public class Webcast
    {
        public string Description { get; set; }
        public DateTime ReleaseDate { get; set; }
        public Uri Link { get; set; }

        public Webcast(string description, DateTime releasedate, Uri link)
        {
            Description = description;
            ReleaseDate = releasedate;
            Link = link;
        }
    }

Zawiera ona trzy podstawowe atrybuty, opisujące pojedynczy Webcast, czyli:

  • Description – opis Webcastu,
  • ReleaseDate – data wydania,
  • Link – adres Webcastu.

Następnie, w pliku MainPage.xaml.cs została przywołana metoda zdarzeniowa MainPage_Loaded, która uruchamiana w momencie wczytania strony głównej. W tej metodzie powołany został przykładowy obiekt Webcast, przypisany do DataContext strony:

public MainPage()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            this.DataContext =
                new Webcast("Advanced Features in Silverlight 5",
                            new DateTime(2011, 4, 14),
                            new Uri("https://channel9.msdn.com/Events/MIX/MIX11/MED12", UriKind.Absolute)
                    );
        }

Kolejnym krokiem jest odpowiednia definicja pliku MainPage.xaml, w którym skorzystano ze znanego już sposobu Bindingu danych do konkretnych kontrolek:

<StackPanel Orientation="Vertical">
            <TextBlock Text="{Binding Description}" />
            <TextBlock Name="txtReleaseDate" Text="{Binding ReleseDate}" />
            <HyperlinkButton Content="Watch the video" NavigateUri="{Binding Link}" TargetName="_blank" />
        </StackPanel>

Po uruchomieniu tak przygotowanej aplikacji, widać że uruchamia się ona poprawnie - Rys. 1. Pierwsze uruchomienie. Pojawia się natomiast pytanie, dlaczego nie jest wyświetlana data wydania Webcastu? Kompilator nie wyświetlił błędu, wszystko powinno więc być w porządku, jak się okazuje – nie do końca.

Pierwsze uruchomienie

Rys. 1. Pierwsze uruchomienie.

Aby wyśledzić błąd, należy przejść do edycji pliku MainPage.xaml i ustawić breakpoint w linijce, w której należy spodziewać się nieprawidłowego działania:

<TextBlock Name="txtReleaseDate" Text="{Binding ReleseDate}" />

Należy uruchomić ponownie aplikację poprzez naciśnięcie klawisza F5. Następnie, trzeba dokładnie przeanalizować wiadomości, jakie wysyła kompilator, który sygnalizuje błąd, związany z niemożnością odnalezienia atrybutu definiującego datę wydania Webcastu - Rys. 2. Śledzenie błędu.

Śledzenie błędu

Rys. 2. Śledzenie błędu.

Po chwili zastanowienia zdajemy sobie sprawę z literówki popełnionej w pliku MainPage.xaml, dotyczącej nazwy atrybutu obiektu Webcast. Po poprawieniu nazwy i ponownym uruchomieniu projektu, błąd już nie pojawia się, a w przeglądarce widać pożądany efekt, przedstawiony na Rys. 3. Efekt końcowy.

Efekt końcowy

Rys. 3. Efekt końcowy.

Powyższy przykład przedstawia praktyczne zastosowanie niezwykle przydatnej funkcji Silverlight 5 – XAML Debugging, dzięki której programista może teraz wyśledzić błędy, trudne do zlokalizowania we wcześniejszych wersjach.

Podsumowanie

W tym artykule dowiedzieliśmy się, jak korzystać z XAML – Debugging oraz poznaliśmy zalety, jakie wnosi ta funkcja podczas tworzenia oprogramowania w technologii Silverlight 5.

W następnym artykule omówione zostanie zagadnienie tworzenia grafiki 3D z wykorzystaniem XNA 3D API.