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.

niedziela, 23 maja 2010

15 minut o Silverlight na Windows Phone 7 - materiały z Visual Studio 2010 Community Launch w Krakowie

Poniżej zamieszczam materiały z mojego wczorajszego wystąpienia na Visual Studio 2010 Community Launch.


VSCL 2010: Windows Phone 7 - intro


VSCL 2010: Silverlight for Windows Phone 7 - hello world


VSCL 2010: Silverlight for Windows Phone 7 - sample application

        

Dodatkowo z myślą o tym evencie przygotowałem również nagranie pokazujące notyfikacje push we wszystkich trzech rodzajach. Z uwagi na dość krótki czas wystąpienia nie trafiło do ostatecznej wersji prezentacji.


Silverlight for Windows Phone 7 - weather service

środa, 19 maja 2010

Windows Phone 7 w Krakowie - 22.05.2010

W najbliższą sobotę będę miał przyjemność opowiedzieć o Silverlight na Windows Phone 7 na konferencji Visual Studio Community Launch 2010 w Krakowie.

p18

Pokażę m.in aplikację napisaną z uwzględnieniem najnowszych trendów UI oraz funkcjonalności Windows Phone 7, które są dostępne dla programisty od ostatniego odświeżonego wydania CTP. Więcej szczegółów nie mogę zdradzić. Wszystko wyjaśni się w sobotę !

piątek, 14 maja 2010

Windows Phone 7 - Suplement!

Odświeżone CTP dla Windows Phone 7 stwarza nowe możliwości z uwagi na odblokowane taski systemowe, obsługę tile (skrót do aplikacji na ekranie startowym)  oraz  związanego z nim rodzaju notyfikacji push. Standardowy obraz pozwala na uruchomienie wszystkich tasków systemowych! Czasami jednak nie ma możliwości ich wcześniejszego skonfigurowania, by były bardziej użyteczne.

To nie wszystko! Bardzo łatwo można pozyskać odblokowaną wersję obrazu działającą tym razem z Visual Studio !!! Można więc pokusić się o testowanie swoich aplikacji obok aplikacji systemowych z lepszą możliwością ich skonfigurowania. W niektórych przypadkach powoduje to efekt jakbyśmy się przesiedli z syreny do mercedesa -:)

Tym mocnym  technicznym uderzeniem zaczynam dzisiejszego posta!  Tak więc pobawimy się taskami systemowymi (w obrazie standardowym i odblokowanym). Zobaczymy co i jak działa, co działa mniej lub nie działa. Pokażemy wszystkie trzy rodzaje notyfikacji push oraz wspomnimy o usuwaniu certyfikatów z dll-ek Toolkita. Nie wiesz o co chodzi? Nie szkodzi. Na pewno więcej będziesz wiedział jak przeczytasz moją pisaninę.

Zacznijmy od tasków systemowych. Napisałem sobie taką syntetyczną stricte techniczną aplikację o nazwie WP7 TasksDemo.


Aplikacja WP7 TasksDemo

Składa się ona ze strony startowej, strony do zapisywaniu danych w kontaktach telefonu oraz przykładowego formularza z obrazkiem i danymi, które mogą być uzupełnione przy pomocy elementów znajdujących się na telefonie. Dodatkowo z użyciem tych danych można wykonać dodatkowe czynności. Achtung! Nie ma persystencji między kolejnymi uruchomieniami emulatora.

Jakie  konkretne czynności możemy zrobić  na Windows Phone 7 ?

Zapisywanie emaila lub numeru telefonu w kontaktach 


Zapisywanie numeru telefonu

Zapis polega na uruchomieniu modułu zarządzającego kontaktami. Możemy stworzyć nowy kontakt lub wybrać istniejący. Zostanie otwarty odpowiedni podformularz (emaila lub numeru telefonu) w ustawieniach danego kontaktu z podanym przez nas wcześniej tekstem, który możemy edytować. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wstawianie zdjęcia zrobionego kamerą


Wstawianie zdjęcia z kamery

Możliwe jest zrobienie zdjęcia bez kamery ? …Tak! Co prawda dostajemy “czerwoną kamerę”, ale możemy na niej prawym górnym przyciskiem cyknąć fotkę (nawet taki dźwięk słychać). Nasza aplikacja dostaje “białe zdjęcie” z małym czarnym prostokątem. W praktyce wyszło, że “czerwona kamera” pojawia się przy obecności w miarę nowej grafiki na komputerze (o wymaganiach dla emulacji GPU można przeczytać w dokumentacji), inaczej zobaczymy czarny ekran z migoczącym obszarem –:) Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wstawianie  zdjęcia  z kolekcji Pictures telefonu


Wstawianie wybranego zdjęcia

Używając zarówno standardowego jak i odblokowanego obrazu zobaczymy moduł obrazków bez obrazków! Czyli lipa? Ale screenshoty pokazują, że jednak jakoś się udało…  W odblokowanym obrazie możemy niezależnie otworzyć sobie wcześniej moduł Pictures przed otworzeniem go z poziomu naszej aplikacji. Jeśli to zrobimy, to wtedy przykładowe obrazki również pokażą się, gdy wywołamy moduł z poziomu aplikacji. Czyli jakaś niedoróbka … ale nie przeszkadza nam to cieszyć się wybraniem przykładowego obrazka, który pojawi się w naszej aplikacji!  

Wstawianie emaila lub numeru telefonu z kontaktów


Wstawianie emaila z kontaktów


Wstawianie numeru telefonu z kontaktów

Wybór emaila i numeru telefonicznego odbywa się podobnie. Należy wybrać kontakt z podanej listy. Aby lista była niepusta należy wcześniej dodać kontakty (przez taska zapisania do kontaktu - obraz standardowy i odblokowany lub stworzenie kontaktu w hubie People – obraz odblokowany). Nie każdy kontakt musi mieć zdefiniowany email i numer telefonu. W oknie wyboru prezentowana jest odfiltrowana lista kontaktów (np. wszystkie kontakty mające zdefiniowany email przy wyborze emaila). Do aplikacji jest przekazywany email lub numer telefonu wybranego przez nas kontaktu.

Wysyłanie maila


Wysyłanie maila

W obrazie standardowym oraz w odblokowanym - ale bez wcześniejszej konfiguracji konta pocztowego - dostaniemy informację o braku konfiguracji. W obrazie odblokowanym konfiguracja konta pocztowego odbywa się przez odpowiedni moduł (możemy wybrać predefiniowany rodzaj konta – m.in Windows Live, Outook, GMail - lub zdefiniować każde inne dowolne konto internetowe). Przy GMail i Windows Live konfiguracja zapisała mi się, ale przy próbie sychronizacji skrzynki dostałem informację o błędzie. Outlooka nie udało mi się do końca skonfigurować. Po skonfigurowaniu konta przy wysyłaniu maila z aplikacji dostajemy okno z wyborem konta pocztowego. Gdy wybierzemy jedno z wcześniej przez nas skonfigurowanych kont, wyświetli się nam edytor maila (możliwość predefiniowania tematu i treści wiadomości). Wiadomości przy GMail “wysyłały się bez błędu”, jednak nie udało mi się otrzymać żadnej z tych wiadomości-:) Być może wysyłanie w ogóle nie działa, ale zabawa i pole do dalszych eksperymentów są. Uwaga! Konfiguracja kont pocztowych zostanie utracone przy ponownym uruchomieniu emulatora!

Rozmowa telefoniczna


Rozmowa telefoniczna

Po zaakceptowaniu wykonania rozmowy przez użytkownika pojawia się interfejs pokazujący próbę nawiązania połączenia. Jedną z opcji jest zakończenie rozmowy, której użycie jest dla nas konieczne. Nie mamy przecież GSM w emulatorze, aż tak dobrze nie ma –:) Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wysyłanie SMS


Wysyłanie SMS

Uruchamia się aplikacja do tworzenia i wysyłania SMS-ów. Wysłanie nie powoduje błędu, … oczywiście fizycznie nic się wysłało, ale zabawa jest. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Odtwarzanie multimediów - MediaPlayer


Odtwarzanie video w MediaPlayer

Niestety, póki co nie udało mi się usłyszeć dźwięków ani zobaczyć obrazu na plikach, z którymi MediaElement w emulatorze radzi sobie bez problemu. Zamiast tego dostajemy tajemniczą informację, że wystąpił błąd, ale nie wiadomo, co jest jego przyczyną. Nie ma znaczenia tutaj rodzaj obrazu systemu, grafika też zdaje się nie mieć znaczenia (tak, gdzie jest lepsza pojawia się odtwarzacz, ale nic się nie odtwarza). Jakby się komuś udało coś odtworzyć, to koniecznie napiszcie !  Może w grę wchodzi jednak grafika (sterownik karty) albo kodek ?  Chyba, że po prostu odtwarzacz jeszcze nie działa …

MarketPlace


MarketPlace - Podcasts

Bez problemu otwiera się MarketPlace w kategorii muzyka oraz podcasts. Przy aplikacjach zaczął się bardzo długo otwierać, tak więc nie doczekałem się. Nie próbowałem też … nic kupować. Tak więc pozostaje tutaj ewentualnie przestrzeń do dalszej zabawy. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Wyszukiwanie


Wyszukiwarka - wyniki

Podane w aplikacji zapytanie jest przekazywane do otworzonej wyszukiwarki, która zwraca wyniki. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem.

Od ostatniego CTP pojawiła się możliwość przypinania skrótu do aplikacji tile na ekranie startowym. Na liście aplikacji trzeba dłużej przycisnąć ikonę aplikacji, wtedy pojawia się kontekstowe menu. Wybieramy interesującą nas opcję. Tile z ekranu startowego usuwamy naciskając przycisk w prawym górnym rogu. Nie ma różnicy w zachowaniu między standardowym a odblokowanym obrazem. W odblokowanym widzimy jednak też wiele innych tile systemowych aplikacji. Jak ustawić własny tekst i obrazek dla tile w swojej aplikacji? W ustawieniach projektu Visual Studio jest odpowiednia sekcja.


Tile

Ostatnie CTP wnosi też obsługę notyfikacji push typu tile. Team opracował bardzo dobry przykład pokazujący działanie wszystkich trzech rodzajów notyfikacji push: tile, toast i raw. Pozwoliłem sobie się nim pobawić, co widać na screenshotach. Patrzyłem też na przykład Ingo Rammer'a. Jak autor pisze nie działa wysyłanie notyfikacji tile ze zdalnym adresem obrazka. Eksperymentowałem też w innych przykładach i na razie nie udało mi się ani razu wyświetlić w tile obrazka o ścieżce adresu spoza aplikacji. 

Należy pamiętać, że w emulatorze należy odczekać dwie lub trzy minuty od jego uruchomienia, aby notyfikacje działały. Uwaga! W praktyce wyszło mi, że przy oblokowanym obrazie notyfikacje push nie działają! Straciłem na to półtora wieczoru próbując odpalić ten przykład, ale w końcu mnie oświeciło, gdy na innej maszynie zadziałał mi od razu … Potem sprawdziłem kilka różnych przykładów na obu obrazach. Z nieznanych powodów nie jest wołane zdarzenie zmiany adresu URI kanału, czyli nie dostajemy z klienta push adresu dla naszej aplikacji! 


Push Notifications

W CTP jest oczywiście trochę więcej zmian. Tutaj wspomnę jeszcze tylko o korzystaniu z bibliotek podpisanych innych certyfikatem niż certyfikat WP7. Jakie to biblioteki? Ano na przykład biblioteki Microsoftu Silverlight SDK i Silverlight Toolkit. Teraz przy korzystaniu z nich dostajemy na dzień dobry komunikat o błędzie albo czarny ekran aplikacji. Co robić? Jest skrypt PowerShell wskazany m.in przez Tim Heuer'a  do … usuwania certyfikatów z dll-ek. Microsoft wydał gdzieś oświadczenie, że czasowo do następnego CTP lub końca lipca tego roku zezwala na takie praktyki. 

Wziąłem na warsztat WrapPanel z toolkit’a jako że kiedyś używałem już tej kontrolki w Windows Phone 7. Obecnie dostaniemy czarny ekran, jeśli nie usuniemy certyfikatu z assembly. Po tej operacji wraca wszystko do normy - mój przykład WP7WrapPanel.

Wszystkie opisywane tutaj przykłady (WP7TasksDemo, notyfikacje push, WP7WrapPanel + skrypt) można pobrać tutaj:

sobota, 24 kwietnia 2010

Silverlight na Windows Phone 7 - Warszawa i Wrocław

Warszawa i Wrocław to pierwsze miasta, w których pokazałem swoją najnowszą prezentację o Silverlight na Windows Phone 7.

DSCF1301_JPG

W Warszawie w zeszłym tygodniu miałem przyjemność uczestniczyć w 6 spotkaniu grupy pasjonatów technologii Silverlight -Warsaw Silverlight Study Group (WSSG). Myślę, że było to bardzo dobre miejsce na premierę zupełnie nowego materiału -:)

Dzisiaj z kolei brałem udział w Visual Studio 2010 Community Launch (VSCL) organizowanym przez Wrocławską Grupę .Net . Spotkania we Wrocławiu też mają fajny klimat -:)

Poniżej zamieszczam materiały.

Prezentacja PowerPoint

Praktyczne przykłady

Nagrania video używane przy prezentowaniu


Windows Phone 7 - wprowadzenie


Silverlight for Windows Phone - nawigacja


Silverlight for Windows Phone - input scoping


Silverlight for Windows Phone - multi-touch


Silverlight for Windows Phone - orientacja ekranu


Silverlight for Windows Phone - akcelerometr


Silverlight for Windows Phone - theming


Silverlight for Windows Phone - kontrolka WebBrowser


Silverlight for Windows Phone - ApplicationBar


Silverlight for Windows Phone - taski


Silverlight for Windows Phone - lokalizacja


Silverlight for Windows Phone - notyfikacje push

P.S Dziękuję liderom WSSG i Wroc.Net za wspaniałą organizację i pomoc w różnych kwestiach.

Nowa prezentacja o Silverlight na Windows Phone, to nie wszystko. Ciąg dalszy nastąpi.

środa, 14 kwietnia 2010

Pierwszy post po przerwie pewnej

Ostatni raz dokonałem tutaj wpisu … jeszcze w 2009 roku. Czy to oznacza że w tym czasie porzuciłem swoje zainteresowania? Wręcz przeciwnie, w tym okresie dość regularnie i systematycznie rozpoznawałem Silverlight 4 Beta  i WCF RIA Services. Produkowałem posty poświęcone tej tematyce na swoim drugim blogu oraz zrobiłem kolegom 2-dniowe podsumowanie obejmujące wszystkie zagadnienia związane z WCF RIA Services. Jednak kilka dni później przyszedł MIX 10 i masa nowości. Udało mi się obejrzeć w zasadzie prawie wszystkie prezentacje związane z Silverlight, Blendem, WCF RIA Services  i Windows Phone 7.  Wrażenia swoje utrwaliłem robiąc screenshoty z tego co mi się spodobało i uznałem za istotne lub nowe, powystawiałem jakieś oceny… Potem rozpoznawałem Silverlight na Windows Phone 7, co przełożyło się m.in na moją wczorajszą prezentację w Warszawie. Pomogłem też kolegom w migracji aplikacji z Silverlight 3 na Silverlight 4 RC, gdzie dołożyłem funkcjonalności związane z kamerą. Miałem w głowie tyle ciekawych informacji, a jednak nie znalazło to żadnego odzwierciedlenia w blogu. Dlaczego? Zaczął mnie chyba dotykać problem, którego doświadczają także inni - tyle tego wszystkiego ciekawego dookoła, czas jest jak zawsze ten sam i nie może płynąć wolniej, a jak się już coś pozna, to zawsze staje się przed dylematem, czy już coś pisać o tym, czy może w tym czasie lepiej poznać jeszcze coś głębiej albo więcej …. A każdemu wpisowi trzeba poświęcić trochę czasu, sprawdzić czy nie ma błędów merytorycznych, gramatycznych, wrzucić jakąś grafikę …

Tak więc mam nadzieję wyjaśniłem, czemu czasami może wydawać się, że blog zamiera. Myślę też, że zamiast prowadzić dalej filozoficzne rozważania nad otaczającą nas rzeczywistością i realiami, to lepiej przeznaczę go na posty o konkretnej tematyce technicznej. Mam tu na myśli przede wszystkim Silverlight na Windows Phone.

Trzeba się spieszyć, jeszcze nie okrzepły nowości z MIX’a, a już mamy finalną wersję Visual Studio 2010, a prawdopodobnie w czwartek premiera Silverlight 4 w wersji finalnej oraz pewnie jak sądzę wszystkich narzędzi i platform z nim związanych. Z którymi oczywiście wypada się zaznajomić –:)