Jaka jest różnica między biblioteką kontroli użytkownika a biblioteką kontroli niestandardowej?

Właśnie nadążam za WPF i Chciałbym stworzyć kontrolkę WPF wielokrotnego użytku.

Kiedy patrzę na opcje tworzenia projektów w Visual Studio, widzę "WPF User Control Library" i "WPF Custom Control Library". Nie jest dla mnie jasne, jaka jest różnica między nimi, a moje wyszukiwania w Google nie znalazły żadnych przyzwoitych wyjaśnień.

Chciałbym zrozumieć różnice między nimi i najlepiej zobaczyć kilka przykładów, kiedy użyć jednego nad drugi.

Author: Lightness Races in Orbit, 2009-04-30

2 answers

W praktyce niestandardowe kontrolki są czymś, co implementujesz na poziomie kodu, podczas gdy możesz używać XAML do kontrolek użytkownika. Niestandardowe kontrolki rozszerzają jedną z podstawowych klas kontroli WPF i zapewniają dodatkową funkcjonalność za pomocą kodu, więc cała dodana logika i reprezentacja muszą być zaimplementowane wewnątrz kodu.

Kontrola użytkownika jest technicznie normalną kontrolą treści, którą można rozszerzyć w niektórych częściach kodu, ale zwykle jest rozszerzana poprzez umieszczenie w niej innych kontrolek. Tak jak Kent wspomniał, że UserControl jest agregacją innych kontrolek. Ogranicza to znacznie to, co można zrobić z kontrolą Użytkownika. Jest łatwiejszy w użyciu, ale bardziej ograniczony niż pełna kontrola niestandardowa.

Te kontrolki mają niewielką różnicę z punktu widzenia środowiska pracy. Podczas budowania aplikacji i umieszczania w niej UserControl, drzewo kontroli będzie miało konkretny szablon UserControl wewnątrz niego. Jeśli więc weźmiemy pod uwagę lamerski przykład wyspecjalizowanego przycisku. Jeśli używasz użytkownika kontrolka dodajesz przycisk wewnątrz elementu <UserControl>. Podczas korzystania z niestandardowej kontroli można czerpać sama kontrola z przycisku najprawdopodobniej. Różnica byłaby widoczna w drzewie logicznym.

Podczas gdy sterowanie niestandardowe zapewniłoby drzewo logiczne podobne do

  • okno
    • CustomButton

UserControl da logiczne drzewo z

  • okno
    • CustomButtonUserControl
      • Przycisk

Więc w końcu UserControl jest tylko normalną ContentControl, którą można nieco rozszerzyć i dla której można predefiniować zawartość. Niestandardowa kontrola zapewnia większą elastyczność w cenie łatwości implementacji, ponieważ musisz wykonać całą logikę i interakcję w kodzie, zamiast korzystać z XAML.

Choć po tym wszystkim, nie sądzę jest taka duża różnica w szablonach Visual Studio. Najprawdopodobniej Visual Studio Custom Control tworzy projekt z pustą niestandardową kontrolą, podczas gdy projekt kontroli użytkownika jest projektem z pustą kontrolą Użytkownika. Możesz później dodać dowolne elementy do projektu.

Update

A moja opinia na temat tego, kiedy używać custom control i user control jest taka, że jeśli można coś zrobić z kontrolką użytkownika i dodatkowym elementem kontrolnym w drzewie logicznym nie przeszkadza ci, użyj kontroli użytkownika, ponieważ są one o wiele łatwiejsze do tworzenia i utrzymywania. Użyj kontrolki niestandardowej tylko wtedy, gdy masz powód, aby nie używać kontrolki użytkownika.

 119
Author: Mikko Rantanen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-30 16:48:05

A Control reprezentuje pewne zachowanie, które można skinnable (template), podczas gdy {[1] } jest ogólnie agregacją wyższego poziomu Control s, która jest specyficzna dla aplikacji.

Więcej informacji dostępnych tutaj .

 24
Author: Kent Boogaart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 15:04:43