Vue d'ensemble du modèle de contenu de TextElement

Cette vue d’ensemble de con mode tente l décrit le contenu pris en charge pour un TextElement. La Paragraph classe est un type de TextElement. Un modèle de contenu décrit les objets/éléments qui peuvent être contenus dans d’autres. Cette vue d’ensemble récapitule le con mode tente l utilisé pour les objets dérivés de TextElement. Pour plus d’informations, consultez Vue d’ensemble des documents dynamiques.

Diagramme d’un modèle de contenu

Le diagramme suivant récapitule le con mode tente l pour les classes dérivéesTextElement, ainsi que la façon dont d’autres classes ne TextElement correspondent pas à ce modèle.

Diagram: Flow content containment schema

Comme le montre le diagramme précédent, les enfants autorisés pour un élément ne sont pas nécessairement déterminés par si une classe est dérivée de la Block classe ou d’une Inline classe. Par exemple, une Span ( Inlineclasse dérivée) ne peut avoir Inline que des éléments enfants, mais une Figure (également une Inlineclasse dérivée) ne peut avoir Block que des éléments enfants. Par conséquent, un diagramme est 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 d’un RichTextBox.

  1. Un RichTextBox doit contenir un FlowDocumentBlockobjet dérivé à son tour. Voici le segment correspondant extrait du diagramme précédent.

    Diagram: RichTextBox containment rules

    À ce stade, le balisage peut ressembler à ceci.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Selon le diagramme, il existe plusieurs Block éléments à choisir parmi lesquels inclure Paragraph, Section, Table, Listet BlockUIContainer (voir classes dérivées de bloc dans le diagramme précédent). Supposons que nous voulons un Table. Selon le diagramme précédent, un Table contient des TableRowGroup éléments contenant TableRow , qui contiennent des éléments qui contiennent TableCell un Blockobjet dérivé. Voici le segment correspondant à Table partir du diagramme précédent.

    Diagram: Parent/child schema for Table

    Voici le balisage correspondant.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Là encore, un ou plusieurs Block éléments sont requis sous un TableCell. Pour simplifier, insérons du texte dans la cellule. Nous pouvons le faire à l’aide d’un ParagraphRun élément. Voici les segments correspondants du diagramme montrant qu’un Paragraph élément peut prendre un Inline élément et qu’un Run (élément Inline ) ne peut prendre que du texte brut.

    Diagram: Parent/child schema for Paragraph

    Diagram: Parent/Child schema for Run

Voici le balisage de l’exemple complet.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://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 programmation

Le contenu d’un TextElement est constitué par des collections, et par programmation, la manipulation du contenu des TextElement objets est effectuée en travaillant avec ces collections. Il existe trois collections différentes utilisées par TextElement les classes dérivées :

Vous pouvez manipuler (ajouter ou supprimer) des éléments dans ces collections à l’aide des propriétés Inlines, Blocks et ListItems correspondantes. Les exemples suivants montrent comment manipuler le contenu d’un objet Span à l’aide de la propriété Inlines.

Remarque

Table utilise plusieurs collections pour manipuler son contenu, mais ces collections 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 Add méthode pour ajouter deux exécutions de texte en tant qu’enfants de contenu de l’objet Span.

Span spanx = new Span();
spanx.Inlines.Add(new Run("A bit of text content..."));
spanx.Inlines.Add(new Run("A bit more text content..."));
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..."))

L’exemple suivant crée un élément Run et l’insère au début du Span.

Run runx = new Run("Text to insert...");
spanx.Inlines.InsertBefore(spanx.Inlines.FirstInline, runx);
Dim runx As New Run("Text to insert...")
spanx.Inlines.InsertBefore(spanx.Inlines.FirstInline, runx)

L’exemple suivant supprime le dernier Inline élément du Span.

spanx.Inlines.Remove(spanx.Inlines.LastInline);
spanx.Inlines.Remove(spanx.Inlines.LastInline)

L’exemple suivant efface tout le contenu (Inline éléments) du Span.

spanx.Inlines.Clear();
spanx.Inlines.Clear()

Types partageant ce modèle de contenu

Les types suivants héritent de la TextElement classe 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 nonabstract distribués avec le Kit de développement logiciel (SDK) Windows. Vous pouvez utiliser d’autres types qui héritent de TextElement.

Types pouvant contenir des objets TextElement

Consultez Modèle de contenu WPF.

Voir aussi