# 19 WPF-Steuerelemente In diesem Kapitel erfahren Sie, wie Sie die Steuerelemente der WPF, wie z. B. verschiedene Buttontypen, Textboxen, Tooltips, List- und Comboboxen, Flowdocuments etc., einfügen und positionieren. ## 19.1 Hierarchie der WPF-Komponenten Alle WPF-Komponenten befinden sich innerhalb einer tiefreichenden Vererbungshierarchie. Ausgehend von Object werden mit jeder weiteren Ableitung neue Eigenschaften und Methoden eingeführt, was zu einer immer weiter fortschreitenden Spezialisierung der Typen führt. In Abbildung 19.1 sehen Sie einen Ausschnitt aus dieser Vererbungshierarchie. Hier klicken, um das Bild zu vergrößern Abbildung 19.1 Vererbungshierarchie der WPF-Komponenten Sie erhebt keinen Anspruch auf Vollständigkeit, soll Ihnen aber einen Überblick über die wichtigsten Basisklassen verschaffen, die in diesem und dem folgenden Kapitel häufiger genannt werden. In Tabelle 19.1 werden die wichtigsten Merkmale der Klassen genannt.

Tabelle 19.1 Beschreibung der wichtigsten Klassen

Klasse | Beschreibung
DispatcherObject | Die von dieser Klasse abgeleiteten Klassen erlauben nur den Zugriff aus dem Thread, in dem das Objekt erzeugt worden ist. Die meisten Klassen haben DispatcherObject als Basis sind deshalb auch nicht threadsicher.
DependencyObject | Diese Klasse ist die Basis für alle Klassen, die abhängige Eigenschaften unterstützen. In dieser Klasse sind die Methoden GetValue und SetValue definiert.
Freezable | Die Klasse Freezable dient als Basis für alle die Objekte, die in einen schreibgeschützten Zustand (read-only) gesetzt werden können, der auch als fixed bezeichnet wird. Fixierte Freezable-Objekte gelten, im Gegensatz zu DispatcherObject-Objekten, als threadsicher. Vertreter dieser Gruppe sind Pen, Brush oder auch Transform.
Visual | Die Klasse Visual dient als elementare Basis für alle die Objekte. Sie unterstützt das Rendering von Controls und ist damit verantwortlich für die Darstellung.
ContentElement | Diese Klasse ähnelt der Klasse UIElement, kann aber selbst keine eigene Darstellung haben. Objekte, die auf ContentElement zurückzuführen sind, werden meist von Objekten gehostet, die von UIElement abgeleitet sind.
UIElement | Die Klasse Visual dient als Basis für alle visuellen Objekte, die Routed Events unterstützen. Außerdem wird auch ein großer Teil des allgemeinen Eingabe- und Fokusverhaltens für Elemente hier definiert.
FrameworkElement | In dieser Klasse wird die Unterstützung von Styles, Datenbindung, Ressourcen und weiterer allgemeiner Techniken eingeführt (z. B. Tooltips und Kontextmenüs).
Control | Die Klasse Control ist die Basisklasse aller Steuerelemente und fügt der Vererbungshierarchie weitere Eigenschaften hinzu (z. B. Background, Foreground). Außerdem stellt diese Klasse die Unterstützung von Templates bereit, mit denen die Darstellung der Steuerelemente individuell geändert werden kann.
FrameworkContentElement | Entspricht der Beschreibung der Klasse FrameworkElement, gilt allerdings für ContentElement-Objekte.