Ostatnio z kolegami bawiliśmy się w zgadywanie zagadek z soków "Tarczyn", więc zagadkowa atmosfera udzieliła mi się na dobre i postanowiłem również na swoim blogu od czasu do czasu ją wykorzystywać, by nie było monotonnie. Poniżej pierwsza partia różnych problemów i zagadnień z WPF, które sformułowałem dla odmiany w postaci pytań (a dlaczego tak, a dlaczego by nie? o gustach nie dyskutuje sie). Źródło odpowiedzi na nie wszystkie ujawnię w jednym z następnych postów.
1. Różnice w wykonywaniu aplikacji WPF na Windows Vista a Windows XP/2003
2. Jakie metody faktycznie są wywoływane, gdy ustawiamy w XAML dependency property?
3. Jakie są piorytety przy ustalaniu wartości dependency property?
4. Istota "działania" attached properties
5. Co to są komendy i jakie komendy są wbudowane w TextBox?
6. Czy zawartością Tooltip-a musi być tekst?
7. Czy hostowanego HTML-a w kontrolce Frame można obrócić?
8. Co TextBox w WPF zaczerpnął z MS Word?
9. Zasadnicza różnica między LayoutTransform a RenderTransform
10. Czy wszystkie elementy FrameworkElement wspierają transformacje?
11. Czy Grid może sam pilnować, aby dwie kolumny miały zawsze taką samą szerokość, nawet gdy użytkownik będzie jedną z nich zmieniać?
12. Co się stanie jak WrapPanel umieścimy w ViewBox?
13. Jak tworzymy w Visual Studio aplikację WPF standalone, to gdzie ukryła się metoda Main?
14. Trzy sposoby nawigowania w aplikacji WPF
15. Która z kombinacji przejścia WPF->WPF, WPF->HTML, HTML->HTML, HTML->WPF nie powoduje odnotowania w dzienniku nawigacji?
16. Jaki jest związek między PageFunction a Page?
17. Czy w WPF-ie możemy bezpośrednio korzystać z Task Dialog i Aero Glass?
18. Jaka kombinacja wartości propercji Window: AllowsTransparency, WindowStyle i Background pozwoli stworzyć nam okno o dowolnym kształcie zamiast prostokątnego?
19. Jaki proces odpala XBAP?
20. Dwa sposoby przekazywania parametrów do XBAP
21. W jakim elemencie HTML możemy hostować luźny XAML?
22. Do czego może być przydatny LocBaml?
23. Czy element z logicznych zasobów użyty w wielu miejscach, może w każdym z nich wystąpić w innej instancji?
24. W jakiej kolejności (w drzewie logicznym, aplikacji, systemie) poszukiwany jest zasób o danym kluczu?
25. Co to jest PropertyPath i gdzie znajduje zastosowanie?
26. W przypadku jakiego bindingu 1 czy 2-kierunkowego nie zadziała odłączenie bindingu przy jawnym ustawieniu propercji?
27. Czy możemy zrobić binding do swojej propercji i propercji rodzica?
28. Co jest niezwykłego w kolekcji ObservableCollection?
29. Czym różnią się propercje Items i ItemsSource w ListBox? Czy można z nich jednocześnie korzystać?
30. Czy źródłem bindingu może być propercja niebędąca dependency property?
31. Czy celem bindingu może być propercja niebędąca dependency property?
32. Do czego może być przydatna w ListBox propercja DisplayMemberPath?
34. Co może ułatwić developerowi propercja IsSynchronizedWithCurrentItem w przypadku korzystania z kilku ListBox-ów i tego samego źródła bindingu?
35. Sytuacja z pytania 34: Jeśli wszystkie kontrolki ListBox są z wielokrotnym wyborem, to gdy w pierwszej z nich wybierzemy dwa elementy, to czy również dwa elementy zostaną automatycznie wybrane w pozostałych listach?
CDN (ciąg dalszy nastąpi?)
piątek, 21 grudnia 2007
czwartek, 13 grudnia 2007
ASP.NET 3.5 Extensions Preview - z bliska (2)
Pozostałe nowości może nie są tak rewolucyjne, ale z pewnością przydatne i ułatwiające życie:
ASP.NET AJAX - dodana możliwość tworzenia punktów historii w przeglądarce po asynchronicznym wywołaniu, zarządzanie historią po stronie serwera i klienta
ASP.NET Silverlight - dwie kontrolki:
- MediaPlayer - player z predefiniowanym interfejsem w XAML i code-behind w JavaScript (z szeroką możliwością customizacji)
- Silverlight - do łatwego osadzania XAML-a z JavaScriptem lub kodem zarządzanym
ASP.NET AJAX - dodana możliwość tworzenia punktów historii w przeglądarce po asynchronicznym wywołaniu, zarządzanie historią po stronie serwera i klienta
ASP.NET Silverlight - dwie kontrolki:
- MediaPlayer - player z predefiniowanym interfejsem w XAML i code-behind w JavaScript (z szeroką możliwością customizacji)
- Silverlight - do łatwego osadzania XAML-a z JavaScriptem lub kodem zarządzanym
środa, 12 grudnia 2007
ASP.NET 3.5 Extensions Preview - z bliska
Pod adresem http://quickstarts.asp.net/3-5-extensions/ jest dostępna dokumentacja do ASP.NET 3.5 Extensions Preview. Całkiem przystępna. Pierwsze wrażenia po lekturze trzech pierwszych rozdziałów ...
ADO.NET Data Services (dawniej codename "ASTORIA") - specjalizowane usługi WCF pozwalające na dostęp do danych z encji, z przekazywaniem parametrów w adresach URL (np. http://site/data.svc/Customers('ALFKI')/Orders - wszystkie zamówienia klienta o id 'ALFKI'). Protokołem jest zwykły HTTP, a dane są przesyłane w formacie JSON lub AtomPub. Z usług tych można korzystać z poziomu JavaScript (ASP.NET AJAX) lub zarządzanego klienta.
ASP.NET Dynamic Data - równie ciekawy feature, pozwala na dynamiczne generowanie stron na podstawie metadanych z bazy. Na podstawie typów bazodanowych generowane są tabelki z odpowiednimi kontrolkami (do widoku i edycji) i walidatorami. Oczywiście bardzo wiele szablonów można customizować ...
ASP.NET MVC - gwóźdź programu, praktyczna realizacja znanego wszystkim ze studiów wzorca projektowego model-view-controller. Modelem tutaj jest klasa komunikująca się ze źródłem danych, widokiem - moduł renderujący interfejs usera w HTML (strony ASP.NET), a kontrolerem klasa dziedzicząca po klasie Controller z akcjami (metody z atrybutem [ControllerAction]). Każda interakcja jest przychwytywana przez kontroler, każdy URL zapytania jest mapowany na klasę kontrolera i daną akcję (reguły są umieszczone w tablicy routingu). W tym procesie istotną rolę odgrywa UrlRoutingModule (moduł HTTP) i MvcHandler (handler HTTP). W akcji kontrolera można przekazać dane do widoku. Stosując podejście z MVC zdecydowanie łatwiej testować aplikację. Dlaczego dopiero teraz MVC pojawia się w ASP.NET?
c. d. n
ADO.NET Data Services (dawniej codename "ASTORIA") - specjalizowane usługi WCF pozwalające na dostęp do danych z encji, z przekazywaniem parametrów w adresach URL (np. http://site/data.svc/Customers('ALFKI')/Orders - wszystkie zamówienia klienta o id 'ALFKI'). Protokołem jest zwykły HTTP, a dane są przesyłane w formacie JSON lub AtomPub. Z usług tych można korzystać z poziomu JavaScript (ASP.NET AJAX) lub zarządzanego klienta.
ASP.NET Dynamic Data - równie ciekawy feature, pozwala na dynamiczne generowanie stron na podstawie metadanych z bazy. Na podstawie typów bazodanowych generowane są tabelki z odpowiednimi kontrolkami (do widoku i edycji) i walidatorami. Oczywiście bardzo wiele szablonów można customizować ...
ASP.NET MVC - gwóźdź programu, praktyczna realizacja znanego wszystkim ze studiów wzorca projektowego model-view-controller. Modelem tutaj jest klasa komunikująca się ze źródłem danych, widokiem - moduł renderujący interfejs usera w HTML (strony ASP.NET), a kontrolerem klasa dziedzicząca po klasie Controller z akcjami (metody z atrybutem [ControllerAction]). Każda interakcja jest przychwytywana przez kontroler, każdy URL zapytania jest mapowany na klasę kontrolera i daną akcję (reguły są umieszczone w tablicy routingu). W tym procesie istotną rolę odgrywa UrlRoutingModule (moduł HTTP) i MvcHandler (handler HTTP). W akcji kontrolera można przekazać dane do widoku. Stosując podejście z MVC zdecydowanie łatwiej testować aplikację. Dlaczego dopiero teraz MVC pojawia się w ASP.NET?
c. d. n
wtorek, 11 grudnia 2007
Microsoft zasypuje wciąż ...
Microsoft zasypuje wciąż nowymi frameworkami i rozszerzeniami. Właśnie ukazała się wstępna wersja rozszerzeń do ASP.NET 3.5 - jest dostępna pod adresem http://asp.net/downloads/3.5-extensions/. W skład ASP.NET 3.5 Extensions wchodzą następujące elementy:
- ASP.NET AJAX Improvements
- ASP.NET MVC
- ASP.NET Dynamic Data Support
- ASP.NET Silverlight Support
- ADO.NET Data Services
Tak więc nie można się nudzić ...
- ASP.NET AJAX Improvements
- ASP.NET MVC
- ASP.NET Dynamic Data Support
- ASP.NET Silverlight Support
- ADO.NET Data Services
Tak więc nie można się nudzić ...
poniedziałek, 10 grudnia 2007
WCF 3.5 i WPF 3.5 - skok w bok
W weekend zrobiłem jednak skok w bok i poczytałem sobie dokładniej o zmianach w WCF i WPF w .NET 3.5.
Wprowadzone do WCF nowe elementy takie jak workflow services, durable services, web programming model, wcf syndication (Atom 1.0, RSS 2.0), integracja z ASP.NET AJAX czy obsługa nowych specyfikacji WS-* z pewnością zasługują na poświęcenie im należytej uwagi.
Również w WPF spotkamy kilka nowych ciekawostek, z czego najbardziej zainteresowała mnie możliwość tworzenia wtyczek (add-ins). Niestety nic nie jest idealne, istnieją pewne ograniczenia dla WPF w tych wtyczkach, wynikające z przyjętej architektury. Niemniej jednak sprawą na pewno warto się zainteresować.
Wprowadzone do WCF nowe elementy takie jak workflow services, durable services, web programming model, wcf syndication (Atom 1.0, RSS 2.0), integracja z ASP.NET AJAX czy obsługa nowych specyfikacji WS-* z pewnością zasługują na poświęcenie im należytej uwagi.
Również w WPF spotkamy kilka nowych ciekawostek, z czego najbardziej zainteresowała mnie możliwość tworzenia wtyczek (add-ins). Niestety nic nie jest idealne, istnieją pewne ograniczenia dla WPF w tych wtyczkach, wynikające z przyjętej architektury. Niemniej jednak sprawą na pewno warto się zainteresować.
piątek, 7 grudnia 2007
ADO.NET Entity Framework Beta 3 na Mikołaja
Dziś grudnia dnia szóstego Microsoft zrobił prezent i udostępnił ADO.NET Entity Framework w wersji beta 3 wraz z narzędziami dla Visual Studio 2008, dokumentacją i przykładami (oryginalne ogłoszenie znajduje się tu). No cóż, w takim razie w praktyce przyjrzę się już nowej wersji ...
czwartek, 6 grudnia 2007
LINQ: oddalenie

Następne rozdziały to oczywiście opis różnych odmian LINQ:
- LINQ to Objects
- LINQ to ADO.NET (LINQ to SQL, LINQ to DataSet, LINQ to Entities)
- LINQ to XML (z wspomnieniem o LINQ to XSD)
a także ADO.NET Entity Framework.
Poszczególne rodzaje LINQ wydają się całkiem dokładnie przedstawione, w tym różne pułapki i zachowania mające wpływ na wydajność. IMHO jedynie opis ADO.NET Entity Framework i LINQ to Entities wydaje się miejscami trochę ogólny.
No cóż, trzeba się tym wszystkim jeszcze trochę więcej "pobawić" w praktyce, ale to uczynię posługując się już finalną wersją Visual Studio 2008 i .NET 3.5. Może wyjdą przy okazji jakieś różnice, więc będzie ciekawiej -:)
niedziela, 2 grudnia 2007
LINQ: VB.NET 9 lepszy niż C# 3.0 ?

W weźle drugiego albumu możemy zaobserwować podstawianie wartości zmiennej t, XML jest budowany w czasie wykonania. Wizualnie kojarzy mi się to z osadzaniem kodu na stronach ASP.NET bez code-behind.
W przedstawionym kodzie widzimy wybranie wszystkich wezłów potomnych Album za pomocą nawiasów "< >" oraz atrybutu z pojedynczego węzła przy użyciu @. Czyż nie jest to fajne udogodnienie?
Również tutaj nie ma żadnych cudów -:) Kompilator zamienia XML na odpowiednie obiekty XDocument, XElement i XAttribute, a "< >" i @ odpowiednio na wywołania metod Elements i Attribute. Lecz czy właśnie rzeczy osiągnięte takimi prostymi sposobami nie są piękne?
sobota, 1 grudnia 2007
Druga część mojego artykułu o Cardspace na codeguru.pl
Na portalu codeguru.pl został zamieszczony artykuł mojego autorstwa Wprowadzenie do Cardspace – cz.II. Zachęcam do jego przeczytania.
Silverlight: gra niczym "Milionerzy"
...
Nie będzie już Silverlight 1.1
...
Ponieważ będzie ... Silverlight 2.0 !!!
Tytuł jednego z newsów na jednym z portali był tak sformułowany, że zapowiadał niebyt Silverlight 1.1. Zanim przyczytałem treść newsa pomyślałem, że to może koniec rozwoju tej technologii. Na szczęście wszystko się wyjaśniło i będziemy mieć od razu Silverlight 2.0 (sytuacja dla mnie zupełnie jak swego czasu w "Milionerach" Urbańskiego - sic!). Zmiana numeru wersji wydaje się sensowna, bo w następnym wydaniu planowane jest wiele nowych "features". Publiczna beta ma się ukazać w pierwszym kwartale 2008 i ma zawierać:
- WPF UI Framework: rozszerzalne kontrolki, zarządzanie layout'em, 2-way binding, wsparcie dla szablonów i skórek (ma być zachowana kompatybilność z podzbiorem WPF 3.5)
- nowe kontrolki: typowe znane z formularzy (textbox, checkbox, radiobutton, itd), zarządzające layout'em (StackPanel, Grid, itd), o częstej funkcjonalności (TabControl, Slider, ScrollViewer, ProgressBar, itd), do obsługi danych (DataGrid, itd)
- bogatą komunikację sieciową: REST, POX, RSS, WS-*, wsparcie dla dostępu cross domain
- bogatą bibliotekę klas: klasy podstawowe (kolekcje, IO, generyki, wątki, globalizacja, XML, local storage, itd), LINQ for XML i integracja z HTML DOM API
Spośród wymienionych elementów, najbardziej się cieszę z kontrolek (do tej pory prawie ich nie było!), paneli, gridów oraz szablonów i skórek. To jest to czego wyraźnie brakowało w dotychczasowych wersjach Silverlight, w tym 1.1 Alpha. Dzięki kontrolkom Silverlight będzie użyteczny do budowy formatek w aplikacjach o biznesowej funkcjonalności, dla różnych przeglądarek i bez potrzeby instalowania frameworka przez klientów. I będzie to - jak się wydaje - znacznie lepsza opcja od dotychczasowych rozwiązań Microsoftu w zakresie "smart client" (stare niebezpieczne ActiveX, zarządzane kontrolki Windows Forms .NET hostowane w IE i wymagające instalacji frameworka po stronie klienta, WPF XBAP hostowane w IE i Firefox (od .NET 3.5) - jednak wciąż wymagające frameworka u klienta)
Nie będzie już Silverlight 1.1
...
Ponieważ będzie ... Silverlight 2.0 !!!
Tytuł jednego z newsów na jednym z portali był tak sformułowany, że zapowiadał niebyt Silverlight 1.1. Zanim przyczytałem treść newsa pomyślałem, że to może koniec rozwoju tej technologii. Na szczęście wszystko się wyjaśniło i będziemy mieć od razu Silverlight 2.0 (sytuacja dla mnie zupełnie jak swego czasu w "Milionerach" Urbańskiego - sic!). Zmiana numeru wersji wydaje się sensowna, bo w następnym wydaniu planowane jest wiele nowych "features". Publiczna beta ma się ukazać w pierwszym kwartale 2008 i ma zawierać:
- WPF UI Framework: rozszerzalne kontrolki, zarządzanie layout'em, 2-way binding, wsparcie dla szablonów i skórek (ma być zachowana kompatybilność z podzbiorem WPF 3.5)
- nowe kontrolki: typowe znane z formularzy (textbox, checkbox, radiobutton, itd), zarządzające layout'em (StackPanel, Grid, itd), o częstej funkcjonalności (TabControl, Slider, ScrollViewer, ProgressBar, itd), do obsługi danych (DataGrid, itd)
- bogatą komunikację sieciową: REST, POX, RSS, WS-*, wsparcie dla dostępu cross domain
- bogatą bibliotekę klas: klasy podstawowe (kolekcje, IO, generyki, wątki, globalizacja, XML, local storage, itd), LINQ for XML i integracja z HTML DOM API
Spośród wymienionych elementów, najbardziej się cieszę z kontrolek (do tej pory prawie ich nie było!), paneli, gridów oraz szablonów i skórek. To jest to czego wyraźnie brakowało w dotychczasowych wersjach Silverlight, w tym 1.1 Alpha. Dzięki kontrolkom Silverlight będzie użyteczny do budowy formatek w aplikacjach o biznesowej funkcjonalności, dla różnych przeglądarek i bez potrzeby instalowania frameworka przez klientów. I będzie to - jak się wydaje - znacznie lepsza opcja od dotychczasowych rozwiązań Microsoftu w zakresie "smart client" (stare niebezpieczne ActiveX, zarządzane kontrolki Windows Forms .NET hostowane w IE i wymagające instalacji frameworka po stronie klienta, WPF XBAP hostowane w IE i Firefox (od .NET 3.5) - jednak wciąż wymagające frameworka u klienta)