Immer wieder bin ich auf der Suche nach einem Thema, über welches ich einen Blog-Post verfassen kann. Und so bin ich kürzlich wieder über das Thema CommandLink-Button gestolpert. Da dieser weder in WinForms, noch in der WPF out-of-the-box unterstützt wird, möchte ich ein kleines Tutorial über die Entwicklung eines CommandLink-Button als CustomControl in WPF erstellen. Nicht zuletzt dient dieses Tutorial auch dazu, Erlerntes weiter zu verfestigen. Bei der Entwicklung des Controls sollen die Windows User Experience Guidelines eingehalten werden. Damit der Beitrag nicht zu lange wird teile ich ihn in kleine Beiträge auf und werde von Zeit zu Zeit eine Fortsetzung posten.
Anforderungen an den CommandLink-Button
Bevor ich mit der Entwicklung des CommandLinks beginne, muss ich herausfinden wie der CommandLink ab Windows-Vista funktioniert. Dazu analysiere ich zunächst die unterschiedlichen Zustände die er Button einnehmen kann.
- Normal
- MouseOver
- MouseOver + Focused
- Focused
- Pressed
Die fünf möglichen Zustände sind nun ermittelt. Als nächstes stellt sich die Frage welchen Inhalt ein solcher CommandLink anzeigen kann. Wer Windows-Vista oder Windows 7 kennt, weis, dass in den dortigen CommandLinks nicht nur Text vorkommt. Sie enthalten oft noch Details zur anstehenden Aktion, wie z.B. beim Überschreiben von Dateien. Dennoch sind ganz klare feste Bestandteile zu erkennen.
- Icon oder grüner Pfeil / Schutzschild
- Titel in grosser Schrift
- Beschreibungstext unterhalb des Titels mit kleiner Schrift
- (Details in unterschiedlichen Ausführungen)
![]() |
| CommandLink unter Windows 7 |
Fester Bestandteil des CommandLink sind, das Icon, Titel und Beschreibungstext. Details unterhalb des Beschreibungstextes sind optional und können je nach Scenario variieren. Der CommandLink soll als eigenständiges CustomControl erstellt werden. Dennoch möchte ich vermeiden sämtliche Logik von Grund auf neu schreiben zu müssen. Deshalb ziehe ich es vor, den CommandLink von einem bestehenden und funktional möglichst ähnlichem Control abzuleiten. Nichts liegt dabei näher, als das bereits im Framework vorhande Button-Control.
Fortsetzung folgt...

Gibt es eine Fortsetzung! Das würde mich sehr interessieren! :-)
AntwortenLöschen