Vue d'ensemble du modèle de contenu de TextElement
Cette vue d'ensemble de modèle de contenu décrit le contenu pris en charge pour un TextElement. La classe Paragraph est un type de TextElement. Un modèle de contenu décrit les types d'objets/d'éléments qui peuvent être contenus dans d'autres. Cette vue d'ensemble résume le modèle de contenu utilisé pour les objets dérivés de TextElement. Pour plus d'informations, consultez Vue d'ensemble des documents dynamiques.
Cette rubrique comprend les sections suivantes.
- Diagramme de modèle de contenu
- Utilisation du contenu de TextElement par programme
- Types partageant ce modèle de contenu
- Types qui peuvent contenir des objets TextElement
- Rubriques connexes
Diagramme de modèle de contenu
Le diagramme suivant résume le modèle de contenu pour les classes dérivées de TextElement ainsi que la façon dont les autres classes non-TextElement s'adaptent à ce modèle.
Comme vous pouvez le constater dans le diagramme précédent, les enfants autorisés pour un élément ne sont pas nécessairement déterminés par le fait qu'une classe dérive de la classe Block ou d'une classe Inline. Par exemple, une Span (une classe dérivée Inline) peut uniquement avoir des éléments enfants Inline, mais une Figure (également une classe dérivée Inline) peut uniquement avoir des éléments enfants Block. Par conséquent, ce diagramme est très utile pour déterminer rapidement quel élément peut être contenu dans un autre. Par exemple, utilisons le diagramme pour déterminer comment construire le contenu de flux de RichTextBox.
RichTextBox doit contenir unFlowDocument qui doit à son tour contenir un objet dérivé Block. Voici le segment correspondant extrait du diagramme précédent.
À ce stade, le balisage peut ressembler à ceci.
<RichTextBox> <FlowDocument> <!-- One or more Block-derived object… --> </FlowDocument> </RichTextBox>
D'après le schéma, plusieurs éléments Block peuvent être sélectionnés, notamment Paragraph, Section, Table, List et BlockUIContainer (voir classes dérivées de Block dans le diagramme précédent). Supposons que nous souhaitons Table. Le diagramme précédent indique qu'un Table contient un TableRowGroup contenant des éléments TableRow, qui contiennent des éléments TableCell contenant eux-mêmes un objet dérivé de Block. Voici le segment correspondant pour Table, extrait du diagramme précédent.
Voici le balisage correspondant.
<RichTextBox> <FlowDocument> <Table> <TableRowGroup> <TableRow> <TableCell> <!-- One or more Block-derived object… --> </TableCell> </TableRow> </TableRowGroup> </Table> </FlowDocument> </RichTextBox>
Ici encore, un ou plusieurs éléments Block sont requis sous TableCell. Pour simplifier, insérons du texte dans la cellule. Pour cela, nous pouvons utiliser un Paragraph avec un élément Run. Voici les segments correspondants extraits du diagramme ; ils indiquent qu'un Paragraph peut contenir un élément Inline et qu'un Run (élément Inline) peut uniquement contenir du texte brut.
Voici le balisage de l'exemple complet.
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
<RichTextBox>
<FlowDocument>
<!-- Normally a table would have multiple rows and multiple
cells but this code is for demonstration purposes.-->
<Table>
<TableRowGroup>
<TableRow>
<TableCell>
<Paragraph>
<!-- The schema does not actually require
explicit use of the Run tag in markup. It
is only included here for clarity. -->
<Run>Paragraph in a Table Cell.</Run>
</Paragraph>
</TableCell>
</TableRow>
</TableRowGroup>
</Table>
</FlowDocument>
</RichTextBox>
</Page>
Utilisation du contenu de TextElement par programme
Le contenu de TextElement est composé de collections. La manipulation par programme du contenu d'objets TextElement se fait en travaillant avec ces collections. Il existe trois collections différentes utilisées par les classes dérivées TextElement :
InlineCollection : représente une collection d'éléments Inline. InlineCollection définit le contenu enfant autorisé des éléments Paragraph, Span et TextBlock.
BlockCollection : représente une collection d'éléments Block. BlockCollection définit le contenu enfant autorisé des éléments FlowDocument, Section, ListItem, TableCell, Floater et Figure.
ListItemCollection : un élément de contenu de flux qui représente un élément de contenu particulier dans une List ordonnée ou non ordonnée.
Vous pouvez manipuler (ajouter ou supprimer des éléments) ces collections à l'aide des propriétés Inlines, Blocks et ListItems correspondantes. Les exemples suivants montrent comment manipuler le contenu d'un Span à l'aide de la propriété Inlines.
Remarque |
---|
La table utilise plusieurs collections pour manipuler son contenu, mais elles ne sont pas abordées ici.Pour plus d'informations, consultez Vue d'ensemble de Table. |
L'exemple suivant crée un objet Span, puis utilise la méthode Add pour ajouter deux exécutions de texte comme contenu enfant du Span.
Dim spanx As New Span()
spanx.Inlines.Add(New Run("A bit of text content..."))
spanx.Inlines.Add(New Run("A bit more text content..."))
Span spanx = new Span();
spanx.Inlines.Add(new Run("A bit of text content..."));
spanx.Inlines.Add(new Run("A bit more text content..."));
L'exemple suivant crée un élément Run et l'insère au début de Span.
Dim runx As New Run("Text to insert...")
spanx.Inlines.InsertBefore(spanx.Inlines.FirstInline, runx)
Run runx = new Run("Text to insert...");
spanx.Inlines.InsertBefore(spanx.Inlines.FirstInline, runx);
L'exemple suivant supprime le dernier élément Inline de Span.
spanx.Inlines.Remove(spanx.Inlines.LastInline)
spanx.Inlines.Remove(spanx.Inlines.LastInline);
L'exemple suivant efface tout le contenu (éléments Inline de Span.
spanx.Inlines.Clear()
spanx.Inlines.Clear();
Types partageant ce modèle de contenu
Les types suivants héritent de la classe TextElement et peuvent être utilisés pour afficher le contenu décrit dans cette vue d'ensemble.
Bold, Figure, Floater, Hyperlink, InlineUIContainer, Italic, LineBreak, List, ListItem, Paragraph, Run, Section, Span, Table, Underline.
Notez que cette liste inclut uniquement les types non abstraits distribués avec le Windows SDK. Vous pouvez utiliser d'autres types qui héritent de TextElement.
Types qui peuvent contenir des objets TextElement
Consultez Modèle de contenu WPF.
Voir aussi
Tâches
Comment : manipuler un FlowDocument avec la propriété Blocks
Comment : manipuler des éléments de contenu de flux avec la propriété Blocks
Comment : manipuler un FlowDocument avec la propriété Blocks
Comment : manipuler les colonnes d'un tableau avec la propriété Columns
Comment : manipuler les groupes de lignes d'un tableau avec la propriété RowGroups