Freigeben über


WPF-Inhaltsmodell

Windows Presentation Foundation (WPF) ist eine Präsentationsplattform, die viele Steuerelemente und steuerelementähnliche Typen bereitstellt, deren Hauptzweck die Anzeige verschiedener Inhaltstypen ist. Um zu bestimmen, welches Steuerelement verwendet oder von welchem Steuerelement abgeleitet werden soll, sollten Sie verstehen, welche Arten von Objekten ein bestimmtes Steuerelement am besten darstellen kann.

In diesem Artikel 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 auch die Inhaltseigenschaften für jedes Inhaltsmodell aufgeführt. Eine Inhaltseigenschaft ist eine Eigenschaft, die zum Speichern des Inhalts des Objekts verwendet wird.

Klassen, die beliebige Inhalte enthalten

Einige Steuerelemente können ein Objekt eines beliebigen Typs enthalten, z. B. eine Zeichenfolge, ein DateTime-Objekt oder eine UIElement, die ein Container für zusätzliche Elemente ist. Ein Button-Element kann z. B. ein Bild und einen Text enthalten, oder ein CheckBox-Element kann den Wert von DateTime.Now enthalten.

WPF verfügt über vier Klassen, die beliebige Inhalte enthalten können. In der folgenden Tabelle sind die Klassen aufgeführt, die von Controlerben.

Klasse, die beliebige Inhalte enthält Inhalt
ContentControl Ein einzelnes beliebiges Objekt.
HeaderedContentControl Eine Kopfzeile und ein einzelnes Element, die beide beliebige Objekte sind.
ItemsControl Eine Auflistung beliebiger Objekte.
HeaderedItemsControl Eine Kopfzeile und eine Auflistung von Elementen, die alle beliebige Objekte sind.

Steuerelemente, die von diesen Klassen erben, können denselben Inhaltstyp enthalten und den Inhalt auf die gleiche Weise behandeln. Die folgende Abbildung zeigt ein Steuerelement aus jedem Inhaltsmodell, das ein Bild und Text enthält.

Screenshot mit vier verschiedenen Steuerelementen, eines aus jedem Inhaltsmodell.

Steuerelemente, die ein einzelnes beliebiges Objekt enthalten

Die ContentControl-Klasse enthält ein einzelnes Element beliebigen Inhalts. Die Inhaltseigenschaft ist Content. Die folgenden Steuerelemente erben von ContentControl und verwenden das Inhaltsmodell:

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

Screenshot mit vier Schaltflächen mit unterschiedlichen Inhaltstypen.

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

Steuerelemente mit einem Header und einzelnen beliebigen Objekt

Die Klasse HeaderedContentControl erbt von ContentControl und zeigt Inhalte mit einer Kopfzeile an. Sie erbt die Inhaltseigenschaft Contentvon ContentControl und definiert die Eigenschaft Header, die vom Typ Objectist, und deshalb können beide ein beliebiges Objekt sein.

Die folgenden Steuerelemente erben von HeaderedContentControl und verwenden das Inhaltsmodell:

Die folgende Illustration 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-Eigenschaft weist eine Zeichenfolge im Header-Element und ein TextBlock-Element in der Content-Eigenschaft auf.

TabControl-Steuerelement, das unterschiedliche Typen in der Header-Eigenschaft verwendet.

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

Steuerelemente, die eine Auflistung beliebiger Objekte enthalten

Die ItemsControl Klasse erbt von 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 mit einer Datensammlung aufzufüllen. Wenn Sie keine Sammlung verwenden möchten, um ItemsControlzu befüllen, können Sie Elemente mithilfe der Items-Eigenschaft hinzufügen.

Die folgenden Steuerelemente erben von ItemsControl und verwenden das Inhaltsmodell:

Die folgende Illustration zeigt ein ListBox-Steuerelement, das solche Elemente enthält:

Screenshot, der eine ListBox mit vier Arten von Inhalten zeigt.

Steuerelemente mit einem Header und einer Sammlung beliebiger Objekte

Die HeaderedItemsControl Klasse erbt von ItemsControl und kann mehrere Elemente enthalten, z. B. Zeichenfolgen, Objekte oder andere Elemente und eine Kopfzeile. Sie erbt die Inhaltsattribute ItemsControl, ItemsSourceund Itemsund definiert die Eigenschaft Header, die ein beliebiges Objekt sein kann.

Die folgenden Steuerelemente erben von HeaderedItemsControl und verwenden das Inhaltsmodell:

Klassen, die eine Auflistung von UIElement-Objekten enthalten

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

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

Weitere Informationen finden Sie unter Übersicht über Panels.

Klassen, die sich auf die Darstellung eines UIElements auswirken

Die Decorator-Klasse wendet visuelle Effekte auf oder um ein einzelnes untergeordnetes UIElement-Element herum an. Die Inhaltseigenschaft ist Child. Die folgenden Klassen erben von Decorator und verwenden das Inhaltsmodell:

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

TextBox mit schwarzem Rahmen
TextBlock mit Rahmen

Klassen, die visuelles Feedback zu einem UI-Element geben

Die Adorner Klasse stellt einem Benutzer visuelle Hinweise bereit. Verwenden Sie z. B. Adorner, um funktionale Griffe zu Elementen hinzuzufügen oder Statusinformationen zu einem 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 stellt drei primäre Steuerelemente bereit, mit denen Benutzer Text eingeben können. Jedes Steuerelement zeigt den Text anders an. In der folgenden Tabelle sind diese drei textbezogenen Steuerelemente, deren Funktionen beim Anzeigen von Text und deren Eigenschaften aufgeführt, die den Text des Steuerelements enthalten.

Steuerung Text wird angezeigt als Inhaltseigenschaft
TextBox Klartext Text
RichTextBox Formatierter Text Document
PasswordBox Versteckter Text (Zeichen sind verdeckt) Password

Klassen, die Ihren Text anzeigen

Mehrere Klassen können 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, FlowDocumentPageVieweroder FlowDocumentScrollViewer.

TextBlock besitzt zwei Inhaltseigenschaften: Text und Inlines. Wenn Sie Text anzeigen möchten, der eine konsistente Formatierung verwendet, ist die Text Eigenschaft häufig Ihre beste Wahl. Wenn Sie beabsichtigen, im gesamten Text unterschiedliche Formatierungen zu verwenden, verwenden Sie die eigenschaft Inlines. Die Inlines-Eigenschaft ist eine Auflistung von Inline Objekten, die angeben, wie Text formatiert werden soll.

In der folgenden Tabelle sind die Inhaltseigenschaften für die Klassen FlowDocumentReader, FlowDocumentPageViewerund FlowDocumentScrollViewer aufgeführt.

Steuerung Inhaltseigenschaft Inhaltseigenschaftstyp
FlowDocumentPageViewer Document IDocumentPaginatorSource
FlowDocumentReader Document FlowDocument
FlowDocumentScrollViewer Document FlowDocument

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

Klassen, die Ihren 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 von Text in einem Block dar. Viele Inline Klassen geben die Formatierung für den Text an, auf den sie angewendet werden. Jedes TextElement verfügt über ein eigenes Inhaltsmodell. Weitere Informationen finden Sie unter Übersicht über das TextElement-Inhaltsmodell.

Weitere Informationen