czwartek, grudzień 17, 2009

Udziwnienia w WPFie

Uwielbiam WPF’a. Uważam, że w tej technologii brzmi wielki potencjał, który z czasem ujawni się i skłoni więcej firm to zainteresowania się tą technologią. Im więcej jednak w niej siedzę tym więcej pojawia się rzeczy które sprawiają, że zatrzymuję się na chwilę i próbuję dociec czemu tak ktoś daną rzecz zrobił. Ostatnio miałem takie przejście z Bindingiem.

Prosty przykład

Chciałem sobie zbindować przycisk, ale tak aby wartość była otoczona dodatkowym tekstem. Oczywiście WPF pozwala nam na to za pomocą StringFormat. Napisałem więc taki kawałek kodu:

<Button Content="{Binding Text, StringFormat=Wartość: {0}, Mode=OneWay}" />

Oczywiście DataContext odpowiednio został ustawiony. Uruchamiam no i nie działa. To znaczy wartość się pojawia, ale już tekst “Wartość: “ – nie. Co jest pomyślałem. Szybka weryfikacja z MSDN’em i wygląda na to, że poprawnie wszystko jest napisane. Spróbowałem jeszcze z inną kontrolką:

<TextBlock Text="{Binding Text, StringFormat=Wartość: {0}, Mode=OneWay}" />

Zmieniłem Button na TextBlock oraz właściwość Content na Text. Uruchamiam no i działa. Magia? Nie. Okazuje się, że StringFormat nie działa dla pola Content. Najciekawsze, że MSDN nic o tym nie wspomina przy opisie tej właściwości bindingu. Co należy zrobić aby mieć taką samą możliwość formatowania dla właściwości Content? Należy posłużyć się właściwością ContentStringFormat na danym obiekcie a nie w Bindingu. Nie bardzo rozumiem czemu zostało to tak rozróżnione przez to muszę się zastanawiać czy zmieniając pole Bindowania nie muszę zmienić także miejsca gdzie ustawiam format. Nie wiem może są za tym jakieś większe przesłanki ale jak dla mnie wygląda to jak niedogadanie się co do części funkcjonalności WPF’a.

Cóż trzeba z tym żyć. Może w wersji 4 zostało to naprawione? Nie miałem okazji sprawdzić – może ktoś wie?

środa, grudzień 02, 2009

Na co nie czekam w Silverlight 4

Silverlight 4 zbliża się wielkimi krokami. Jeśli wierzyć zapowiedziom ujrzymy go już na wiosnę 2010.

Nie czekam na możliwości drukowania. Choć to na pewno przydatna funkcjonalność w poważnych aplikacjach biznesowych. Nie czekam też na wsparcie kamery i mikrofonu. Przydatne będą i na pewno te możliwości poprawią możliwości zastosowania Silverlighta w segmencie rozrywkowym.
Nie czekam na tryb podwyższonych uprawnień choć ten na pewno po części ułatwi programowanie niektórych aplikacji biznesowych w SL.
RIA services również mną nie wstrząsną choć na pewno złagodzą ból pojawiający się przy okazji łączenia Silvelrighta z usługami na serwerze za pomocą WCFa.

Na nic mi będzie możliwość wyświetlania HTML’a w aplikacjach. Choć czasem osadzenia filmu flashowego może się przydać.
Możliwość oprogramowania prawego przycisku także nie zrobi na mnie większego wrażenia. Wsparcie dla Multi touch w wersji Out-Of-Browser to pikuś. Pan Pikuś.

Na co więc czekam?

Można by się zastanowić zatem na co czekam? A no czekam na jedną malutką rzecz. Tak malutką, że często pomijaną we wszelkich informacjach o nowościach w SL4. Co to takiego?

Werble…

Jest to możliwość używania tego samego kodu w aplikacji SL i w pełnym frameworku. Do tej pory muszę tworzyć do tego celu dwa projekty. Oczywiście da się nie powielać kodu poprzez linkowanie plików w projektach jednak nadal jest to trochę uciążliwe. Dzięki tej funkcjonalności moje życie będzie prostsze :).

Podsumowanie

Oczywiście wszystkie wymienione wyżej funkcjonalności będą przeze mnie mile powitane wraz z nadejściem SL4 :). Tak na prawdę ten post jest krótką notką na temat tego co się pojawi w SL4. Jednak, żeby nie było – z możliwości użycia tego samego kodu naprawdę się cieszę.