WPF-Inhaltsmodell

Windows Presentation Foundation (WPF) ist eine Präsentationsplattform, die viele Steuerelemente und steuerelementähnliche Typen bereitstellt, deren Hauptaufgabe in der Anzeige unterschiedlicher Inhaltstypen besteht. Um zu bestimmen, welches Steuerelement verwendet oder von welchem Steuerelement abgeleitet werden soll, sollten Sie mit den Objektarten vertraut sein, die ein bestimmtes Steuerelement am besten anzeigen können.

In diesem Thema wird das Inhaltsmodell für WPF-Steuerelemente und steuerelementähnliche Typen zusammengefasst. Das Inhaltsmodell beschreibt, welche Inhalte in einem Steuerelement verwendet werden können. In diesem Thema werden ebenfalls die Inhaltseigenschaften für jedes Inhaltsmodell aufgezählt. Eine Inhaltseigenschaft ist eine Eigenschaft, die zum Speichern des Inhalts des Objekts verwendet wird.

Klassen mit beliebigem Inhalt

Einige Steuerelemente können ein Objekt beliebigen Typs enthalten, z. B. eine Zeichenfolge, ein DateTime-Objekt oder ein UIElement, das als Container für zusätzliche Elemente dient. Eine Button kann z. B. ein Bild und einen Text enthalten; oder ein CheckBox kann den Wert von DateTime.Now enthalten.

In WPF gibt es vier Klassen, die beliebigen Inhalt enthalten. In der folgenden Tabelle sind die Klassen aufgeführt, die von Control erben.

Klassen mit beliebigem Inhalt Inhalt
ContentControl Ein einzelnes beliebiges Objekt
HeaderedContentControl Ein Header und ein einzelnes Element, die beide beliebige Objekte sind
ItemsControl Eine Auflistung beliebiger Objekte
HeaderedItemsControl Ein Header und eine Auflistung von Elementen, die alle beliebige Objekte sind

Steuerelemente, die von diesen Klassen erben, können dieselbe Art von Inhalt enthalten und den Inhalt auf die gleiche Weise behandeln. Die folgende Abbildung zeigt ein Steuerelement aus den einzelnen Inhaltsmodellen, das ein Bild und Text enthält:

Screenshot that shows four different controls, one from each content model.

Steuerelemente mit einem einzelnen beliebigen Objekt

Die ContentControl-Klasse enthält eine einzelne Komponente beliebigen Inhalts. Ihre Inhaltseigenschaft ist Content. Die folgenden Steuerelemente erben von ContentControl und verwenden dessen Inhaltsmodell:

Die folgende Abbildung zeigt vier Schaltflächen, deren Content auf eine Zeichenfolge, ein DateTime-Objekt, ein Rectangle und ein Panel festgelegt sind, das ein Ellipse und ein TextBlock enthält:

Screenshot that shows four buttons with different content types.

Ein Beispiel zum Festlegen der Content-Eigenschaft finden Sie unter ContentControl.

Steuerelemente mit einem Header und einzelnen beliebigen Objekt

Die HeaderedContentControl-Klasse erbt von ContentControl und zeigt Inhalte mit einem Header an. Sie erbt die Inhaltseigenschaft, Content, von ContentControl und definiert die Header-Eigenschaft vom Typ Object. Daher können beide ein beliebiges Objekt sein.

Die folgenden Steuerelemente erben von HeaderedContentControl und verwenden dessen Inhaltsmodell:

Die folgende Abbildung zeigt zwei TabItem-Objekte. Die erste TabItem-Instanz hat UIElement-Objekte als Header und Content. Der Header ist auf eine StackPanel-Instanz festgelegt, die eine Ellipse-Instanz und einen TextBlock enthält. Der Content ist auf eine StackPanel-Instanz festgelegt, die einen TextBlock und eine Label enthält. Die zweite TabItem-Instanz besitzt eine Zeichenfolge im Header und einen TextBlock im Content.

TabControl that uses different types in the Header property.

Ein Beispiel dafür, wie Sie TabItem-Objekte erstellen können, finden Sie unter HeaderedContentControl.

Steuerelemente mit einer Auflistung von beliebigen Objekten

Die ItemsControl-Klasse erbt vom Control und kann mehrere Elemente enthalten, z. B. Zeichenfolgen, Objekte oder andere Elemente. Die Inhaltseigenschaften sind ItemsSource und Items. ItemsSource wird in der Regel verwendet, um die ItemsControl-Instanz mit einer Datensammlung aufzufüllen. Wenn Sie keine Sammlung verwenden möchten, um die ItemsControl-Instanz aufzufüllen, können Sie Elemente mithilfe der Items-Eigenschaft hinzufügen.

Die folgenden Steuerelemente erben von ItemsControl und verwenden dessen Inhaltsmodell:

Die folgende Abbildung zeigt ein ListBox, das die folgenden Arten von Elementen enthält:

Screenshot that shows a ListBox with four types of content.

Steuerelemente mit einem Header und einer Auflistung von beliebigen Objekten

Die HeaderedItemsControl-Klasse erbt vom ItemsControl und kann mehrere Elemente enthalten, z. B. Zeichenfolgen, Objekte oder andere Elemente und einen Header. Sie erbt die ItemsControl-Inhaltseigenschaften, ItemsSource und Items, und definiert die Header-Eigenschaft, die ein beliebiges Objekt sein kann.

Die folgenden Steuerelemente erben von HeaderedItemsControl und verwenden dessen Inhaltsmodell:

Klassen mit einer Auflistung von UIElement-Objekten

Die Panel-Klasse positioniert untergeordnete UIElement-Objekte und ordnet sie an. Ihre Inhaltseigenschaft ist Children.

Die folgenden Klassen erben von der Panel-Klasse und verwenden ihr Inhaltsmodell:

Weitere Informationen finden Sie unter Übersicht über Panel-Elemente.

Klassen, die sich auf die Anzeige eines UIElement-Objekts auswirken

Die Decorator-Klasse wendet visuelle Effekte auf oder um eine einzelne untergeordnete UIElement-Instanz herum an. Ihre Inhaltseigenschaft ist Child. Die folgenden Klassen erben von Decorator und verwenden dessen Inhaltsmodell:

Die folgende Abbildung zeigt ein TextBox, das mit einem Border umgeben (verziert) ist.

TextBox with black border
Textfeld mit einem Rahmen

Klassen, die visuelles Feedback zu einem UIElement bereitstellen

Die Adorner-Klasse bietet einem Benutzer visuelle Hinweise. Verwenden Sie z. B. eine Adorner-Instanz, um Elementen funktionale Handles hinzuzufügen oder Statusinformationen über ein Steuerelement bereitzustellen. Die Adorner-Klasse bietet ein Framework, damit Sie Ihre eigenen Adorner erstellen können. WPF stellt keine implementierten Adorner bereit. Weitere Informationen finden Sie unter Übersicht über Adorner.

Klassen, mit denen Benutzer Text eingeben können

WPF bietet drei primäre Steuerelemente, mit denen Benutzer Text eingeben können. Jedes Steuerelement zeigt den Text unterschiedlich an. Die folgende Tabelle enthält diese drei textbezogene Steuerelemente, ihre Funktionen bei der Textanzeige und ihre Eigenschaften, die den Text des Steuerelements enthalten.

Control Text wird angezeigt als Inhaltseigenschaft
TextBox Nur-Text Text
RichTextBox Formatierter Text Document
PasswordBox Ausgeblendeter Text (Zeichen werden maskiert) Password

Klassen, die Ihren Text anzeigen

Es können mehrere Klassen verwendet werden, um einfachen oder formatierten Text anzuzeigen. Sie können TextBlock verwenden, um kleine Textmengen anzuzeigen. Wenn Sie große Textmengen anzeigen möchten, verwenden Sie die Steuerelemente FlowDocumentReader, FlowDocumentPageViewer oder FlowDocumentScrollViewer.

Der TextBlock besitzt zwei Inhaltseigenschaften: Text und Inlines. Wenn Sie Text anzeigen möchten, der eine konsistente Formatierung verwendet, ist die Text-Eigenschaft oft die beste Wahl. Wenn Sie vorhaben, im gesamten Text unterschiedliche Formatierungen zu verwenden, verwenden Sie die Inlines-Eigenschaft. Die Inlines-Eigenschaft ist eine Sammlung von Inline-Objekten, die angeben, wie der Text formatiert werden soll.

In der folgenden Tabelle ist die Inhaltseigenschaft für FlowDocumentReader-, FlowDocumentPageViewer- und FlowDocumentScrollViewer-Klassen aufgeführt.

Control Inhaltseigenschaft Inhaltseigenschaftstyp
FlowDocumentPageViewer Dokument IDocumentPaginatorSource
FlowDocumentReader Dokument FlowDocument
FlowDocumentScrollViewer Dokument FlowDocument

Die FlowDocument-Instanz implementiert die IDocumentPaginatorSource-Schnittstelle, daher können alle drei Klassen ein FlowDocument als Inhalt annehmen.

Klassen, die den Text formatieren

Mit TextElement und den zugehörigen Klassen können Sie Text formatieren. TextElement-Objekte enthalten und formatieren Text in TextBlock- und FlowDocument-Objekten. Die beiden primären Typen von TextElement-Objekten sind Block-Elemente und Inline-Elemente. Ein Block-Element stellt einen Textblock dar, z. B. einen Absatz oder eine Liste. Ein Inline-Element stellt einen Teil des Texts in einem Block dar. Viele Inline-Klassen legen die Formatierung für den Text fest, auf den sie angewendet werden. Jedes TextElement verfügt über ein eigenes Inhaltsmodell. Weitere Informationen finden Sie unter Übersicht über das TextElement-Inhaltsmodell.

Siehe auch