czwartek, 10 czerwca 2010

Silverlight 4 RTW - odświeżone przykłady + podsumowanie

Ostatnio zaktualizowałem wszystkie swoje wcześniejsze przykłady z Silverlight 4 Beta do wersji RTW (patrz Silverlight 4 RTW Samples - part I i part II).  Dodatkowo wzbogaciłem je o demonstracje większości nowych funkcjonalności, jakie pojawiły się w wersji RC. Mam więc dość mocne podstawy, by podzielić się obecnie pewnymi ciekawostkami i refleksjami na temat Silverlight 4 RTW.

Zacznijmy od kamery internetowej. Aplikacja FaceLight z codeplex z podstawianiem twarzy małpy rządzi! Nie ja pierwszy ją wyszukałem i pewnie nie ostatni, ale bawiąc się kamerą nie mogłem się i ja powstrzymać …

mk-monkey - cl

Co do wydruków to pewnie znajdzie się wiele przeciwników. Pod różnymi względami nie są doskonałe, ale przy pewnej determinacji można zrealizować wydruk wielostronicowy. Mamy informację o rozmiarze wydrukowanej strony, więc jakoś sobie poradzimy.  Jest to pokazane zresztą w training kicie i nie tylko. Ja też mam swój przykład od czasów bety, który po drobnych zmianach nadal jest aktualny.

Myślę, że należy zwrócić uwagę na atrybuty design-time wykorzystywane w data bindingu oraz przykładowe dane w Visual Studio 2010. Przy czym obecnie sami decydujemy, czy przykładowe dane w designie zostaną utworzone z naszych typów przy wywołaniu naszych konstruktorów czy też zostaną utworzone substytuty naszych typów. Możemy też używać bindingu w designie do samego typu bez zainicjalizowanych danych (czy to przez konstruktor czy z przykładowych danych), ale moim zdaniem lepiej jednak jest jeśli jakieś sensowne dane widzimy w designie.  Jeszcze jedno - w dokumentacji wyraźnie pisze, że atrybuty design-time nie mają żadnego wpływu na aplikację w run-time. Tak więc usuwanie atrybutów design w imię optymalizacji aplikacji nie ma po prostu żadnego sensu.

Kolejną rzeczą ciekawą jeśli chodzi o binding jest CollectionViewSource, a to dlatego, że implementuje interfejs ICollectionView, który jest specjalnie traktowany przez binding. Wtedy w scenariuszu master-details możemy używać skróconych ścieżek z pominieciem jawnego wskazania aktualnie zaznaczonego elementu.

Co do RichTextBox’a, to szkoda że serializacja bogatego tekstu nie uwzględnia kontrolek UI. Ciekawostką jest, że po zamknięciu ChildWindow, kontrolki w trybie edycji się … odblokowywują. 

W trusted out of browser zabawa z własną ramką okna może sprawić dużo przyjemności. Nareszcie możemy sami zapanować nad przyciskami okna, jego przeciąganiem i skalowaniem, a jednocześnie nadać mu oryginalny i niebanalny wygląd.

Trusted_OOB_CustomChrome

Szkoda, że obsługa COM nie jest pełna. Parametry nazwane nie są obsługiwane i przykład z czasów bety, który operował na wykresie w Excelu wstawianym do Worda obecnie przestał działać.

Kolejną rzeczą o której chciałbym wspomnieć to NetTcp binding w WCF obsługujący komunikację dwustronną. Tutaj jest taki przykład jeszcze z czasów MIX’a, w którym są przesyłane screenshoty z kamery webowej, co imituje transmisję video w chacie. Przykład może nie idealny, ale go lubię.

WCF_Video_Chat

Myślę, że warto wspomnieć też o WCF Data services i protokole OData. Oprócz wielu takich funkcjonalności jak stronicowanie, projekcja, ma też wydajną obsługę strumieniowania danych binarnych dużego rozmiaru. Pamiętajmy też, że w Visual Studio 2010 możemy korzystać z okna DataSources. Nie jest ono wyłącznie dedykowane dla WCF RIA Services.

WCFDataServices_DataSourcesWindow

Ostatnią rzeczą, o której chciałbym dzisiaj wspomnieć to Silverlight Toolkit, a konkretnie kontrolka menu kontekstowego i nowa – w mojej ocenie znacznie lepsza - obsługa themes. Niejawne stylowanie jest tu już wykorzystywane. Mamy też nową themę z ustawieniami z systemu operacyjnego.

Toolkit_Themes_Menu_Changing

Na zakończenie powiem, że … warto zaznajomić się z nowymi możliwościami narzędzi designera dla Silverlight 4 w Visual Studio 2010. Mamy m.in wyszukiwanie zasobów i spore udogodnienia w edycji panelu Grid!  Najlepiej tutaj obejrzeć 27 odcinek serialu w Silverlight TV, a i tak nie pokazuje on wszystkiego.

Brak komentarzy: