This article has been localized into Polish by the community.
Wprowadzenie
Jak dotąd w tym samouczku używaliśmy tylko wbudowanych kontrolek udostępnionych we frameworku WPF. Pozwalają osiągnąć bardzo wiele, ponieważ są niezwykle elastyczne umożliwiając swoje stylizowanie i narzucanie szablonów, co pozwala zrobić prawie wszystko. Jednak w pewnym momencie prawdopodobnie docenisz korzyści jakie niesie stworzenie własnej kontrolki. W innych frameworkach interfejsu użytkownika, może to być dość kłopotliwe, ale WPF czyni to całkiem łatwym, oferując dwa sposoby realizacji tego zadania: Kontrolka użytkownika (UserControl) i Kontrolka niestandardowa (CustomControl).
Kontrolka użytkownika (UserControl)
Kontrolka użytkownika z WPF dziedziczy po klasie "UserControl" i działa bardzo podobnie do okna WPF: Mamy plik XAML i plik z kodem (Code-behind file). W pliku XAML możesz dodawać istniejące kontrolki WPF, aby stworzyć oczekiwany wygląd kontrolki (user interface), i następnie połączyć go z kodem z pliku "Code-behind", aby osiągnąć założone funkcjonalności i zachowania. WPF pozwala na osadzanie tak przygotowanego zbioru funkcjonalności i zachowań, w postaci kontrolki użytkownika, w jednym lub w wielu miejscach twojej aplikacji. Umożliwia to łatwe grupowanie funkcjonalności i zachowań oraz ich wielokrotne wykorzystanie w różnorakich aplikacjach WPF.
Kontrolka niestandardowa (CustomControl)
Kontrolka niestandardowa jest bardziej "niskopoziomowa" niż kontrolka użytkownika. Gdy tworzysz kontrolkę niestandardową dziedziczysz po istniejącej klasie WPF, w zależności od tego, jak "głęboko" w hierarchii dziedziczenia klas musisz zejść. W wielu przypadkach możesz dziedziczyć po klasie Control, która jest klasą bazową dla bardzo wielu kontrolek WPF (np. TextBox), ale jeśli chcesz zejść jeszcze głębiej możesz dziedziczyć po klasie FrameworkElement lub nawet "UIElement". Pamiętaj, że im głębiej schodzisz, tym większą zyskujesz kontrolę jednocześnie dziedzicząc coraz mniej funkcjonalności i zachowań.
Wygląd kontrolki niestandardowej (CustomControl) jest zazwyczaj kontrolowany za pomocą stylów w pliku motywu, podczas gdy wygląd kontrolki użytkownika (UserControl) jest zgodny z wyglądem pozostałej części aplikacji. Podkreśla to również jedną z głównych różnic pomiędzy CustomControl i UserControl: Kontrolka niestandardowa może być stylizowane, podczas gdy kontrolka użytkownika nie może.
Podsumowanie
Tworzenie kontrolek wielokrotnego użytku w WPF jest bardzo proste, szczególnie jeśli zdecydujesz się na kontrolkę użytkownika (UserControl). W następnym artykule przyjrzymy się, jak łatwe jest stworzenie UserControl, a następnie wykorzystanie jej w aplikacji.