Silverlight – XAML bindings debugging

Na konferencji Silverlight Firestarter (2 grudnia 2010) ogłoszono, że nadchodzi Silverlight 5, a cztery miesiące później, na konferencji MIX 11, ogłoszono publiczną wersję Silverlight 5 Beta.

Jednym z wyczekiwanych ficzerów jest debugowanie bindingów w XAML‚u. To bardzo przydatny wynalazek. Ale aby nie było za łatwo, nie powoduje to, że jeśli wystąpi problem z bindowaniem, to Visual Studio zatrzyma się  i pokaże nam „tutaj masz źle„. Nadal trzeba obserwować okno Output i szukać „Error: BidingExpression path…„.

Nowa „umiejętność” debuggera Visual Studio umożliwiają nam oglądanie context‚u (który jest źródłem bindowania) w bardzo wygodny sposób (i już nie trzeba używać tricków z np. konwerterami).

Przykład

Prosta aplikacja. Jedna klasa Person składająca się z ID, FirstName, LastName, Birthday i Age. Chcemy wyświetlić w kilku TextBox’ach wartości obiektu klasy Person, ale powiedzmy, że źle wpisaliśmy nazwę jednej właściwości (First zamiast FirstName). Po uruchomieniu aplikacji zobaczymy, że First name jest puste.

W tym momencie zaczynamy przeglądać okno Output w Visual Studio aby sprawdzić czy nie było problemów z bindowaniem. Oczywiście widzimy, że problem był.

Możemy sobie poczytać o co chodzi, czego się spodziewał, a co dostał itd. Jak do tej pory nic nowego. Teraz otwieramy plik XAML i ustawiamy break pointa w miejsu gdzie problem występuje (normalnie, F9 w linii gdzie występuje Binding).

Ponownie uruchamiany aplikację i gdy aplikacja będzie próbować bindować właściwość Text kontrolki TextBox, wykonywanie programu zostanie zatrzymane.

W oknie Locals szukamy obiektu BindingState.

W BindingState najbardziej interesuje nas właściwość FinalSource, gdzie znajduje się aktualny context przekazywany do bindowania. Z tego miejsca możemy przeglądać stan tego obiektu. Możemy szybko zobaczyć, że contextem jest obiekt klasy Peron i składa się on m.in z FirstName, a nie First. Widzimy też pozostałe właściwości i ich wartości.

W innych przypadkach, zobaczymy tu czy np. zamiast bindowania obiektu Person, mamy obiekt np. Order albo, że dostaliśmy jakąś kolekcje, a spodziewaliśmy się pojedynczego obiektu itd.

Reklamy

2 thoughts on “Silverlight – XAML bindings debugging

  1. Pingback: XAML bindings debugging w Silverlight 4 | Wojciech Poniatowski

  2. Pingback: dotnetomaniak.pl

Możliwość komentowania jest wyłączona.