Delen via


WPF-inhoudsmodel

Windows Presentation Foundation (WPF) is een presentatieplatform dat veel besturingselementen en typen die op besturingselementen lijken biedt, waarvan het voornaamste doel is om verschillende soorten inhoud weer te geven. Als u wilt bepalen van welk besturingselement moet worden gebruikt of van welk besturingselement moet worden afgeleid, moet u weten welke soorten objecten een bepaald besturingselement het beste kan weergeven.

In dit onderwerp vindt u een overzicht van het inhoudelijke model voor WPF-besturingselementen en typen die op besturingselementen lijken. In het inhoudsmodel wordt beschreven welke inhoud in een besturingselement kan worden gebruikt. Dit onderwerp bevat ook de inhoudseigenschappen voor elk inhoudsmodel. Een inhoudseigenschap is een eigenschap die wordt gebruikt om de inhoud van het object op te slaan.

Klassen die willekeurige inhoud bevatten

Sommige besturingselementen kunnen een object van elk type bevatten, zoals een tekenreeks, een DateTime-object of een UIElement die een container is voor extra items. Een Button kan bijvoorbeeld een afbeelding en tekst bevatten; of een CheckBox kan de waarde van DateTime.Nowbevatten.

WPF heeft vier klassen die willekeurige inhoud kunnen bevatten. De volgende tabel bevat de klassen die overnemen van Control.

Klasse die willekeurige inhoud bevat Inhoud
ContentControl een willekeurig object.
HeaderedContentControl Een koptekst en één item, beide willekeurige objecten.
ItemsControl Een verzameling willekeurige objecten.
HeaderedItemsControl Een koptekst en een verzameling items, die allemaal willekeurige objecten zijn.

Besturingselementen die van deze klassen overnemen, kunnen hetzelfde type inhoud bevatten en de inhoud op dezelfde manier behandelen. In de volgende afbeelding ziet u één besturingselement van elk inhoudsmodel met een afbeelding en tekst:

Schermopname met vier verschillende bedieningselementen, één uit ieder inhoudsmodel.

Besturingselementen die één willekeurig object bevatten

De klasse ContentControl bevat één stukje willekeurige inhoud. De inhoudseigenschap is Content. De volgende besturingselementen nemen over van ContentControl en gebruiken het bijbehorende inhoudsmodel:

In de volgende afbeelding ziet u vier knoppen waarvan de Content is ingesteld op een tekenreeks, een DateTime object, een Rectangleen een Panel die een Ellipse en een TextBlockbevat:

Schermopname met vier knoppen met verschillende inhoudstypen.

Zie ContentControlvoor een voorbeeld van het instellen van de eigenschap Content.

Besturingselementen die een koptekst en één willekeurig object bevatten

De HeaderedContentControl-klasse neemt over van ContentControl en geeft inhoud weer met een koptekst. Het neemt de inhoudseigenschap, Content, over van ContentControl en definieert de eigenschap Header van het type Object; daarom kunnen beide een willekeurig object zijn.

De volgende besturingselementen nemen over van HeaderedContentControl en gebruiken het bijbehorende inhoudsmodel:

In de volgende afbeelding ziet u twee TabItem objecten. De eerste TabItem heeft UIElement objecten als de Header en de Content. De Header is ingesteld op een StackPanel die een Ellipse en een TextBlockbevat. De Content is ingesteld op een StackPanel die een TextBlock en een Labelbevat. De tweede TabItem heeft een string in de Header en een TextBlock in de Content.

TabControl die verschillende typen in de Header-eigenschap gebruikt.

Zie HeaderedContentControlvoor een voorbeeld van het maken van TabItem objecten.

Besturingselementen die een verzameling willekeurige objecten bevatten

De ItemsControl-klasse neemt over van Control en kan meerdere items bevatten, zoals tekenreeksen, objecten of andere elementen. De inhoudseigenschappen zijn ItemsSource en Items. ItemsSource wordt doorgaans gebruikt om de ItemsControl te vullen met een gegevensverzameling. Als u geen verzameling wilt gebruiken om de ItemsControlte vullen, kunt u items toevoegen met behulp van de eigenschap Items.

De volgende besturingselementen nemen over van ItemsControl en gebruiken het bijbehorende inhoudsmodel:

In de volgende afbeelding ziet u een ListBox met deze typen items:

Schermopname van een keuzelijst met vier typen inhoud.

Besturingselementen die een koptekst en een verzameling willekeurige objecten bevatten

De HeaderedItemsControl-klasse neemt over van ItemsControl en kan meerdere items bevatten, zoals tekenreeksen, objecten of andere elementen, en een koptekst. Het neemt de ItemsControl inhoudseigenschappen, ItemsSourceen Itemsover en definieert de Header eigenschap die een willekeurig object kan zijn.

De volgende besturingselementen nemen over van HeaderedItemsControl en gebruiken het bijbehorende inhoudsmodel:

Klassen die een verzameling UIElement-objecten bevatten

Panel klasse positioneert en rangschikt kinder UIElement objecten. De inhoudseigenschap is Children.

De volgende klassen nemen over van de Panel-klasse en gebruiken het bijbehorende inhoudsmodel:

Zie Panels Overviewvoor meer informatie.

Klassen die van invloed zijn op het uiterlijk van een UIElement

De Decorator-klasse past visuele effecten toe op of rond een enkel onderliggend element UIElement. De inhoudseigenschap is Child. De volgende klassen nemen over van Decorator en gebruiken het bijbehorende inhoudsmodel:

Op de volgende afbeelding ziet u een TextBox dat is versierd met een Border eromheen.

tekstvak met zwarte rand
TextBlock met een rand

Klassen die visuele feedback geven over een UIElement

De Adorner-klasse biedt visuele aanwijzingen voor een gebruiker. Gebruik bijvoorbeeld een Adorner om functionele ingangen toe te voegen aan elementen of om statusinformatie over een besturingselement op te geven. De Adorner-klasse biedt een framework zodat u uw eigen versieringen kunt maken. WPF biedt geen geïmplementeerde versieringen. Zie Adorners Overzichtvoor meer informatie.

Klassen waarmee gebruikers tekst kunnen invoeren

WPF biedt drie primaire besturingselementen waarmee gebruikers tekst kunnen invoeren. Elk besturingselement geeft de tekst anders weer. De volgende tabel bevat deze drie besturingselementen met betrekking tot tekst, hun mogelijkheden wanneer ze tekst weergeven en hun eigenschappen die de tekst van het besturingselement bevatten.

Controle Tekst wordt weergegeven als Inhoudseigenschap
TextBox Tekst zonder opmaak Text
RichTextBox Opgemaakte tekst Document
PasswordBox Verborgen tekst (tekens worden gemaskeerd) Password

Klassen die uw tekst weergeven

Verschillende klassen kunnen worden gebruikt om tekst zonder opmaak weer te geven. U kunt TextBlock gebruiken om kleine hoeveelheden tekst weer te geven. Als u grote hoeveelheden tekst wilt weergeven, gebruikt u de besturingselementen FlowDocumentReader, FlowDocumentPageViewerof FlowDocumentScrollViewer.

De TextBlock heeft twee inhoudseigenschappen: Text en Inlines. Wanneer u tekst wilt weergeven die gebruikmaakt van consistente opmaak, is de eigenschap Text vaak de beste keuze. Als u van plan bent om verschillende opmaak in de tekst te gebruiken, gebruikt u de eigenschap Inlines. De eigenschap Inlines is een verzameling van Inline objecten die aangeven hoe tekst moet worden opgemaakt.

De volgende tabel bevat de inhoudseigenschap voor FlowDocumentReader, FlowDocumentPageVieweren FlowDocumentScrollViewer klassen.

Controle Inhoudseigenschap Inhoudseigenschapstype
FlowDocumentPageViewer Document IDocumentPaginatorSource
FlowDocumentReader Document FlowDocument
FlowDocumentScrollViewer Document FlowDocument

De FlowDocument implementeert de IDocumentPaginatorSource-interface; daardoor kunnen alle drie de klassen een FlowDocument als inhoud gebruiken.

Klassen die de tekst opmaken

TextElement en de bijbehorende klassen stellen u in staat om tekst op te maken. TextElement-objecten bevatten en formatteren de tekst in TextBlock- en FlowDocument-objecten. De twee primaire typen TextElement objecten zijn Block elementen en Inline elementen. Een Block element vertegenwoordigt een tekstblok, zoals een alinea of lijst. Een Inline-element vertegenwoordigt een deel van de tekst in een blok. Veel Inline klassen geven opmaak op voor de tekst waarop ze worden toegepast. Elke TextElement heeft een eigen inhoudsmodel. Zie het TextElement Content Model Overviewvoor meer informatie.

Zie ook