Stylowanie kontrolek WPF oraz separacja interfejsów od implementacji, czyli kolejne artykuły w „Programiście”

3 marca, 2014 Krzysztof Piskorski

Niedawno informowaliśmy o tekście jednego z developerów PGS Software, który ukazał się w magazynie „Programista”. Artykuł w ciekawy i wyczerpujący sposób przybliżał podstawy Windows Presentation Foundation. Na szczęście to nie koniec –  właśnie ukazał się kolejny numer pisma, a w nim aż dwa artykuły Wojtka.

Pierwszy porusza temat stylowania kontrolek. Dlaczego akurat ten? Wyjaśnia to najlepiej sam autor:

„Stylowanie kontrolek WPF”, Programista nr 02/2014 (21)

Jakiś czas temu zachciało mi się wprowadzić do mojego programu estetycznie wyglądające pole tekstowe służące do szybkiego filtrowania danych – takie, jakie obecnie ma Visual Studio.

Napisanie własnego komponentu wizualnego (nawet od zera) to dla mnie żadna nowość, ale mój zapał do pisania takiego pola tekstowego szybko ostygł, gdy uświadomiłem sobie, ile pracy będzie kosztowało mnie oprogramowanie całej jego funkcjonalności znanej ze współczesnego Windowsa – od wprowadzania tekstu poprzez ustawianie kursora w dowolnym miejscu, zaznaczenie (klawiaturą i myszką) oraz przenoszenie zaznaczonego tekstu, aż do obsługi schowka i standardowego menu kontekstowego.

Próbowaliście kiedyś napisać pole tekstowe od zera? Ja tak – było to w czasach liceum, gdy uparłem się zaimplementować w DOS-owym trybie graficznym framework podobny do VCLa znanego z Delphi. Znalazłem w sobie dostatecznie dużo samozaparcia, by oprogramować wprowadzanie znaków przy pomocy klawiatury i przesuwanie kursora klawiszami strzałek, ale poddałem się już wówczas, gdy doszło do implementacji mechanizmu pozwalającego użytkownikowi na wpisanie do pola więcej tekstu niż mieściło się w obszarze widocznym na ekranie.

Jak zapewne się domyślacie, WPF pozwala na zaprojektowanie takiego komponentu przy znacznie mniejszym nakładzie pracy. Spróbuję pokazać, w jaki sposób można to osiągnąć.

Resztę można przeczytać w samym artykule, który obejmuje:

– Modyfikowanie istniejących kontrolek
– Aplikowanie stylu
– Zakres działania stylu
– Opis własności „Template”
– Opis części stałych kontrolek
– Triggery

Temat rozwija drugi tekst, który przedstawia dwa ciekawe mechanizmy pomagające developerom radzić sobie z problemami, związanymi z wywoływaniem poszczególnych akcji z poziomu tworzonego interfejsu.

„Interface a implementacja”, Programista nr 02/2014 (21)

W każdym programie okienkowym prędzej czy później programista staje przed zadaniem powiązania wizualnych kontrolek z kodem źródłowym, który realizuje za ich sprawą różne zadania. Najprostszym i często stosowanym sposobem jest napisanie kodu bezpośrednio w handlerach zdarzeń. Sposób ten oczywiście zadziała, ale to jest chyba wszystko dobre, co można o nim powiedzieć. W niniejszym artykule chciałbym zaproponować nieco inne podejście do rozwiązywania tego problemu.

Spróbujmy spojrzeć na interface użytkownika z nieco innej perspektywy. W momencie, gdy użytkownik klika przycisk lub wybiera opcję z menu, jego intencją jest wykonanie pewnej akcji: otwarcie nowego dokumentu, skopiowanie fragmentu tekstu do schowka albo zamknięcie programu. Przez akcję rozumiemy zatem pojedynczą operację, którą można wywołać z poziomu interface’u użytkownika naszej aplikacji.

Najprostszym sposobem zaimplementowania takiej akcji jest wywołanie określonej metody w momencie, gdy użytkownik wybierze odpowiedni element interface’u. Sytuacja skomplikuje się jednak nieco, gdy okaże się, że ta sama akcja może zostać wywołana z poziomu kilku różnych miejsc albo – co gorsza – że jej wywołanie uwarunkowane jest zaistnieniem pewnych szczególnych okoliczności.

Żaden z opisanych problemów nie jest oczywiście nie do rozwiązania. Tyle tylko, że oprogramowanie odpowiednich mechanizmów zajmuje czas, wymaga rozszerzenia architektury aplikacji i panowania nad wszystkim tak, aby na koniec nie utonąć w gąszczu zależności, warunków i flag.

Zachęcamy do lektury obu artykułów. Numer można zamówić tutaj

Najnowsze wpisy