Session: Custom Controls – Fluch oder Segen

8. Dezember 2011
Peggy


Speaker:
Björn Busch (Ergosign)
David Thömmes (Ergosign)

Design-Sicht

Da es unterschiedliche Standpunkte und Ausprägungsgrade gibt, kann man sich streiten.

Wo fängt die Custom-Control an?

Dort wo neue gestylte oder ungestyle Standard-Controls zusammen kommen, redet man von Custom Controls.

Aus Usability-Sicht kann man mit einer Custom Control Mehrwert bieten durch Punkte wie Prominenz, Verständlichkeit, Feedback-Verhalten und Bedarfszentrierung.
Es gibt historisch gesehen eine historische Angst vor Standard-Controls, weil hier kein Standard-Verhalten abgebildet wird. Beim Design ist daher eine besondere Sorgfalt wichtig, da alle Zustände, insbesondere Ungereimtheiten und Besonderheiten dieser Control abgebildet werden sollten. Das Schöne bei WPF ist, dass sowas ohne großen Aufwand gemacht werden kann.

Wenn eine Verbesserung der Usability und eine Kombination von aktiven und passiven Controls passiert, sollte eine Custom Control erstellt werden. Es sollten signifikante Verbesserungen stattfinden.

Vorsicht sollte man walten lassen bei:
Kombination von mehreren aktiven Kontrols
Visueller und kognitiver Überforderung des Anwenders
Beim Erfinden komplett neuer Interaktionen
Bei Dingen die mit “normalen” Mitteln genauso gut gehen.

Beispiele für Custom Controls sind geschickte Pie-Menus wie aus Games oder ausgefeilte mehrschichtige Tabmenus.

Entwicklungssicht

Grundsätzliche Struktur:
Style, Template, Template Binding
Ein Custom Control fängt da an, wo von der Basisklasse zusätzliche Funktionen erweitert werden.

Eine User Control ist:
Einfach zu erstellen, hat Code behind, neue Stukturen und Elementreferenzierung.

Eine Custom Control ist:
Ableitung von einer Klasse, Styling und Templating-Möglicheiten, Visuellen Aufbau mit ControlTemplates und Default-Styling sind möglich.

Tipp: Fortgeschrittene sollten “defensiv” programmieren.

Vergleich
User Control: Xaml + Code behind, Harte Verdrahtung, Hard, geringerer Aufwand, schlechter Reuse
Custom Control: Klasse + Style + Technik, getrennte Logik, flexibles Styling, etwas aufwändiger, guter Reuse

Tipp: Bitte keine Custom Controls auf Basis eines User Controls

Tipp: Custom Controls in separatem Projekt erstellen.

Zum Beleg der Behauptung zeigt uns David komplett die vorbereitete Solution.