Freigeben über


WPF-Inhaltsmodell

Windows Presentation Foundation (WPF) ist eine Präsentationsplattform, die viele Steuerelemente und steuerelementähnliche Typen enthält, deren Hauptaufgabe darin besteht, unterschiedliche Inhaltstypen anzuzeigen. Um zu ermitteln, welches Steuerelement verwendet werden soll oder von welchem Steuerelement abgeleitet werden soll, sollten Sie mit den Arten von Objekten vertraut sein, die ein bestimmtes Steuerelement am besten anzeigen kann.

Dieses Thema fasst das Inhaltsmodell für WPF-Steuerelement- und steuerelementähnliche Typen zusammen. Das Inhaltsmodell beschreibt, welcher Inhalt in einem Steuerelement verwendet werden kann. In diesem Thema sind auch die Inhaltseigenschaften für jedes Inhaltsmodell aufgeführt. Eine Inhaltseigenschaft ist eine Eigenschaft, mit der der Inhalt des Objekts gespeichert werden kann.

Dieses Thema enthält folgende Abschnitte.

  • Klassen, die beliebigen Inhalt enthalten
  • Klassen, die eine Auflistung von UIElement-Objekten enthalten
  • Klassen, die sich auf die Darstellung eines UI-Elements auswirken
  • Klassen, die Visual-Feedback zu einem UI-Element bereitstellen
  • Klassen, die Benutzern die Eingabe von Text ermöglichen
  • Klassen, die Ihren Text anzeigen
  • Klassen, die Ihren Text formatieren
  • Verwandte Abschnitte

Klassen, die beliebigen Inhalt enthalten

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

WPF verfügt über vier Klassen, die beliebigen Inhalt enthalten können. In der folgenden Tabelle sind die Klassen aufgelistet, die von Control erben.

Klasse, die beliebigen Inhalt enthält

Inhalt

ContentControl

Ein einzelnes beliebiges Objekt.

HeaderedContentControl

Ein Header und ein einzelnes Element - beides sind beliebige Objekte.

ItemsControl

Eine Auflistung von beliebigen Objekten.

HeaderedItemsControl

Ein Header und eine Auflistung von Elementen - alle sind beliebige Objekte.

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 von den einzelnen Inhaltsmodellen an, das ein Bild und einigen Text enthält.

Button, GroupBox, Listbox, TreeViewItem

Steuerelemente, die ein einzelnes beliebiges Objekt enthalten

Die ContentControl-Klasse enthält beliebigen Inhalt. Die Inhaltseigenschaft ist Content. Die folgenden Steuerelemente erben von ContentControl und verwenden sein Inhaltsmodell:

In der folgenden Abbildung sind vier Schaltflächen dargestellt, deren Content auf eine Zeichenfolge, ein DateTime-Objekt, ein Rectangle und ein Panel festgelegt wird, die eine Ellipse und einen TextBlock enthalten.

Vier Schaltflächen mit verschiedenen Inhaltstypen

Vier Schaltflächen

Ein Beispiel für das Festlegen der Content-Eigenschaft finden Sie unter ContentControl.

Steuerelemente, die einen Header und ein einzelnes beliebiges Objekt enthalten

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

Die folgenden Steuerelemente erben von HeaderedContentControl und verwenden das entsprechende Inhaltsmodell:

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

TabControl, der unterschiedliche Typen in der Header-Eigenschaft verwendet

TabControl

Ein Beispiel für die Erstellung von TabItem-Objekten 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 den ItemsControl mit einer Datensammlung aufzufüllen. Wenn Sie keine Sammlung verwende möchten, um das ItemsControl aufzufüllen, können Sie mithilfe der Items-Eigenschaft Elemente hinzufügen.

Die folgenden Steuerelemente erben von ItemsControl und verwenden sein Inhaltsmodell:

In der folgenden Abbildung wird ein ListBox dargestellt, das die folgenden Elementtypen enthält.

Listenfeld, das mehrere Typen von Objekten enthält

ListBox mit vier Inhaltstypen

Steuerelemente, die einen Header und eine Auflistung beliebiger Objekte enthalten

Die HeaderedItemsControl-Klasse erbt von ItemsControl und kann mehrere Elemente enthalten, z. B. Zeichenfolgen, Objekte oder andere Elemente sowie eine Kopfzeile. 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 sein Inhaltsmodell:

Klassen, die eine Auflistung von UIElement-Objekten enthalten

Die Panel-Klasse positioniert und ordnet untergeordnete UIElement-Objekte an. Die 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 Darstellung eines UI-Elements auswirken

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

Die folgende Abbildung zeigt ein TextBox, das mit einem umlaufenden Border-Element ergänzt wurde.

Textblock mit einem Rahmen

TextBox mit schwarzem Rahmen

Klassen, die Visual-Feedback zu einem UI-Element bereitstellen

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

Klassen, die Benutzern die Eingabe von Text ermöglichen

WPF stellt drei primäre Steuerelemente bereit, die Benutzern die Eingabe von Text ermöglichen. Jedes Steuerelement zeigt den Text anders an. In der folgenden Tabelle sind diese drei textbezogenen Steuerelemente aufgeführt sowie ihre Funktionen, wenn sie Text anzeigen, und ihre Eigenschaften, die den Text des Steuerelements enthalten.

Steuerelement

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

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

Der TextBlock verfügt über zwei Inhaltseigenschaften: Text und Inlines. Wenn Sie Text anzeigen möchten, der eine einheitliche Formatierung verwendet, ist die Text-Eigenschaft oft die beste Auswahl. Wenn Sie im gesamten Text eine andere Formatierung verwenden möchten, verwenden Sie die Inlines-Eigenschaft. Die Inlines-Eigenschaft ist eine Auflistung von Inline-Objekten, die angeben, wie Text formatiert werden soll.

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

Steuerelement

Inhaltseigenschaft

Typ der Inhaltseigenschaft

FlowDocumentPageViewer

Document

IDocumentPaginatorSource

FlowDocumentReader

Document

FlowDocument

FlowDocumentScrollViewer

Document

FlowDocument

Das FlowDocument-Element implementiert die IDocumentPaginatorSource-Schnittstelle. Daher können alle drei Klassen ein FlowDocument-Element 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 zwei 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 geben Formatierung für den Text an, auf den sie angewendet werden. Jedes TextElement hat ein eigenes Inhaltsmodell. Weitere Informationen finden Sie unter Übersicht über das TextElement-Inhaltsmodell.

Siehe auch

Weitere Ressourcen

WPF-Grundlagen