Partager via


Modèle de contenu WPF

Windows Presentation Foundation (WPF) est une plateforme de présentation qui fournit de nombreux contrôles et types de contrôles dont l'objectif principal consiste à afficher différents types de contenu. Pour déterminer le contrôle à utiliser ou le contrôle à partir duquel dériver, vous devez comprendre les genres d'objets qu'un contrôle particulier peut le mieux afficher.

Cette rubrique résume le modèle de contenu pour le contrôle WPF et les types de contrôle. Le modèle de contenu décrit le contenu qui peut être utilisé dans un contrôle. Cette rubrique répertorie également les propriétés de contenu pour chaque modèle de contenu. Une propriété de contenu est une propriété utilisée pour stocker le contenu d'un objet.

Cette rubrique comprend les sections suivantes.

  • Classes qui contiennent du contenu arbitraire
  • Classes qui contiennent une collection d'objets UIElement
  • Classes qui affectent l'apparence d'un UIElement
  • Classes qui fournissent la rétroaction visuelle à propos d'un UIElement
  • Classes qui permettent à des utilisateurs d'entrer du texte
  • Classes qui affichent votre texte
  • Classes qui mettent en forme votre texte
  • Rubriques connexes

Classes qui contiennent du contenu arbitraire

Certains contrôles peuvent contenir un objet de tout type, tel qu'une chaîne, un objet DateTime ou un UIElement qui est un conteneur pour les éléments supplémentaires. Par exemple, un Button peut contenir une image et du texte ; ou un CheckBox peut contenir la valeur de DateTime.Now.

WPF a quatre classes qui peuvent contenir du contenu arbitraire. Le tableau suivant répertorie les classes qui héritent de Control.

Classe qui contient du contenu arbitraire

Contenu

ContentControl

Objet arbitraire unique.

HeaderedContentControl

En-tête et élément unique, les deux étant des objets arbitraires.

ItemsControl

Collection d'objets arbitraires.

HeaderedItemsControl

En-tête et collection d'éléments, tous étant des objets arbitraires.

Les contrôles qui héritent de ces classes peuvent contenir le même type de contenu et traiter le contenu de la même façon. L'illustration suivante montre un contrôle à partir de chaque modèle de contenu qui contient une image et du texte.

Button, GroupBox, Listbox, TreeViewItem

Contrôles qui contiennent un objet arbitraire unique

La classe ContentControl contient un morceau unique de contenu arbitraire. Sa propriété de contenu est Content. Les contrôles suivants héritent de ContentControl et utilisent son modèle de contenu :

L'illustration suivante montre quatre boutons dont Content a pour valeur une chaîne, un objet DateTime, un Rectangle et un Panel qui contient une Ellipse et un TextBlock.

Quatre boutons qui ont différents types de contenu

Quatre boutons

Pour obtenir un exemple décrivant comment définir la propriété Content, consultez ContentControl.

Contrôles qui contiennent un en-tête et un objet arbitraire unique

La classe HeaderedContentControl hérite de ContentControl et affiche le contenu avec un en-tête. Elle hérite de la propriété de contenu, Content, à partir de ContentControl, et définit la propriété Header qui est de type Object ; par conséquent, les deux peuvent correspondre à un objet arbitraire.

Les contrôles suivants héritent de HeaderedContentControl et utilisent son modèle de contenu :

L'illustration suivante présente deux objets TabItem. Le premier TabItem a des objets UIElement comme le Header et le Content. Le Header a la valeur d'un StackPanel qui contient une Ellipse et un TextBlock. Le Content a la valeur d'un StackPanel qui contient un TextBlock et une Label. Le deuxième TabItem a une chaîne dans le Header et un TextBlock dans le Content.

TabControl qui utilise différents types dans la propriété Header

TabControl

Pour obtenir un exemple de création d'objets TabItem, consultez HeaderedContentControl.

Contrôles qui contiennent une collection d'objets arbitraires

La classe ItemsControl hérite de Control et peut contenir des éléments complexes, tels que les chaînes, les objets ou les autres éléments. Ses propriétés de contenu sont ItemsSource et Items. ItemsSource est généralement utilisée pour remplir le ItemsControl avec une collecte de données. Si vous ne souhaitez pas utiliser une collection pour remplir le ItemsControl, vous pouvez ajouter des éléments à l'aide de la propriété Items.

Les contrôles suivants héritent de ItemsControl et utilisent son modèle de contenu :

L'illustration ci-après montre un contrôle ListBox qui contient ces types d'éléments :

Zone de liste qui contient plusieurs types d'objets

ListBox avec quatre types de contenu

Contrôles qui contiennent un en-tête et une collection d'objets arbitraires

La classe HeaderedItemsControl hérite de ItemsControl et peut contenir des éléments complexes, tels que des chaînes, des objets ou d'autres éléments, et un en-tête. Elle hérite des propriétés de contenu ItemsControl, ItemsSource et Items, et définit la propriété Header qui peut être un objet arbitraire.

Les contrôles suivants héritent de HeaderedItemsControl et utilisent son modèle de contenu :

Classes qui contiennent une collection d'objets UIElement

La classe Panel positionne et réorganise des objets UIElement enfants. Sa propriété de contenu est Children.

Les classes suivantes héritent de la classe Panel et utilisent son modèle de contenu :

Pour plus d'informations, consultez Vue d'ensemble de Panel.

Classes qui affectent l'apparence d'un UIElement

La classe Decorator applique des effets visuels sur ou autour d'un enfant unique UIElement. Sa propriété de contenu est Child. Les classes suivantes héritent de Decorator et utilisent son modèle de contenu :

L'illustration suivante montre un TextBox qui a (est décoré avec) d'un Border autour de lui.

TextBlock qui a une bordure

TextBox avec bordure noire

Classes qui fournissent la rétroaction visuelle à propos d'un UIElement

La classe Adorner fournit des signaux visuels à un utilisateur. Par exemple, utilisez un Adorner pour ajouter des handles fonctionnels aux éléments ou fournir les informations d'état à propos d'un contrôle. La classe Adorner fournit une infrastructure afin que vous puissiez créer vos propres ornements. WPF ne fournit pas tous les ornements implémentés. Pour plus d'informations, consultez Vue d'ensemble des ornements.

Classes qui permettent à des utilisateurs d'entrer du texte

WPF fournit trois contrôles primaires qui permettent aux utilisateurs d'entrer du texte. Chaque contrôle affiche le texte différemment. Le tableau suivant répertorie ces trois contrôles liés au texte, leurs fonctions lorsqu'ils affichent du texte et leurs propriétés qui contiennent le texte du contrôle.

Contrôle

Le texte est affiché comme

Propriété de contenu

TextBox

Texte brut

Text

RichTextBox

Texte mis en forme

Document

PasswordBox

Texte masqué (les caractères sont masqués)

Password

Classes qui affichent votre texte

Plusieurs classes peuvent être utilisées pour afficher du texte brut ou mis en forme. Vous pouvez utiliser TextBlock pour afficher des petites quantités de texte. Si vous souhaitez afficher des grandes quantités de texte, utilisez les contrôles FlowDocumentReader, FlowDocumentPageViewer ou FlowDocumentScrollViewer.

Le TextBlock dispose de deux propriétés de contenu : Text et Inlines. Lorsque vous souhaitez afficher du texte qui utilise une mise en forme cohérente, la propriété Text est souvent le meilleur choix que vous puissiez faire. Si vous projetez d'utiliser une mise en forme différente dans tout le texte, utilisez la propriété Inlines. La propriété Inlines est une collection d'objets Inline, qui spécifie comment mettre en forme du texte.

Le tableau suivant présente la propriété de contenu associée aux classes FlowDocumentReader, FlowDocumentPageViewer et FlowDocumentScrollViewer.

Contrôle

Propriété de contenu

Type de propriété de contenu

FlowDocumentPageViewer

Document

IDocumentPaginatorSource

FlowDocumentReader

Document

FlowDocument

FlowDocumentScrollViewer

Document

FlowDocument

FlowDocument implémente l'interface IDocumentPaginatorSource ; par conséquent, les trois classes peuvent accepter un FlowDocument en tant que contenu.

Classes qui mettent en forme votre texte

TextElement et ses classes connexes vous permettent de mettre en forme du texte. Les objets TextElement contiennent et mettent en forme du texte dans les objets TextBlock et FlowDocument. Les deux types principaux d'objets TextElement sont des éléments Block et Inline. Un élément Block représente un bloc de texte, tel qu'un paragraphe ou une liste. Un élément Inline représente une partie de texte dans un bloc. De nombreuses classes Inline spécifient la mise en forme pour le texte auquel elles s'appliquent. Chaque TextElement a son propre modèle de contenu. Pour plus d'informations, consultez Vue d'ensemble du modèle de contenu de TextElement.

Voir aussi

Autres ressources

Notions de base sur WPF