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.
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:
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.
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:
Eine Zeichenfolge.
Ein DateTime-Objekt.
Ein UIElement-Element.
Eine Panel-Element, die ein Ellipse-Element und ein TextBlock-Element enthält.
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.
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
.NET Desktop feedback