Vue d'ensemble du modèle de contenu de TextElementTextElement Content Model Overview

Cette vue d’ensemble du modèle de contenu décrit le TextElementcontenu pris en charge pour un.This content model overview describes the supported content for a TextElement. La Paragraph classe est un type de TextElement.The Paragraph class is a type of TextElement. Un modèle de contenu décrit les objets/éléments qui peuvent être contenus dans d’autres.A content model describes what objects/elements can be contained in others. Cette vue d’ensemble résume le modèle de contenu utilisé pour les TextElementobjets dérivés de.This overview summarizes the content model used for objects derived from TextElement. Pour plus d’informations, consultez vue d’ensemble des documents dynamiques.For more information, see Flow Document Overview.

Diagramme d’un modèle de contenuContent Model Diagram

Le diagramme suivant résume le modèle de contenu pour les classes dérivées de TextElement , ainsi que la manière dont les autres non- TextElement classes s’intègrent à ce modèle.The following diagram summarizes the content model for classes derived from TextElement as well as how other non- TextElement classes fit into this model.

![Schémas Schéma]de relation contenant-contenu Flow(./media/flow-content-schema.png "Flow_Content_Schema")Diagram: Flow content containment schema

Comme vous pouvez le voir 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 Block soit dérivée Inline de la classe ou d’une classe.As can be seen from the preceding diagram, the children allowed for an element are not necessarily determined by whether a class is derived from the Block class or an Inline class. Par exemple, une Span Inline(classe dérivée) ne peut avoir Inline que des éléments enfants, mais Figure une (également Inlineune classe dérivée de) ne Block peut avoir que des éléments enfants.For example, a Span (an Inline-derived class) can only have Inline child elements, but a Figure (also an Inline-derived class) can only have Block child elements. Un diagramme est donc utile pour déterminer rapidement quel élément peut être contenu dans un autre.Therefore, a diagram is useful for quickly determining what element can be contained in another. Par exemple, utilisons le diagramme pour déterminer comment construire le contenu dynamique d’un RichTextBox.As an example, let's use the diagram to determine how to construct the flow content of a RichTextBox.

  1. Un RichTextBox doit contenir un FlowDocument qui doit à son tour contenir Blockun objet dérivé de.A RichTextBox must contain a FlowDocument which in turn must contain a Block-derived object. Voici le segment correspondant extrait du diagramme précédent.The following is the corresponding segment from the preceding diagram.

    ![Schémas Règles]de relation contenant-contenu RichTextBox(./media/flow-ovw-schemawalkthrough1.png "Flow_Ovw_SchemaWalkThrough1")Diagram: RichTextBox containment rules

    À ce stade, le balisage peut ressembler à ceci.Thus far, this is what the markup might look like.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. D’après le diagramme, vous avez le Block choix Paragraphentre List Section Tableplusieurs éléments,,,, et BlockUIContainer (voir les classes dérivées de Block dans le diagramme précédent).According to the diagram, there are several Block elements to choose from including Paragraph, Section, Table, List, and BlockUIContainer (see Block-derived classes in the preceding diagram). Supposons que nous voulons un Table.Let's say we want a Table. D’après le diagramme précédent, un Table contient un TableRowGroup élément TableRow contenant des éléments qui TableCell contiennent des éléments qui Blockcontiennent un objet dérivé de.According to the preceding diagram, a Table contains a TableRowGroup containing TableRow elements, which contain TableCell elements which contain a Block-derived object. Voici le segment Table correspondant pris dans le diagramme précédent.The following is the corresponding segment for Table taken from the preceding diagram.

    ![Schémas Schéma/enfant parent pour la]table(./media/flow-ovw-schemawalkthrough2.png "Flow_Ovw_SchemaWalkThrough2")Diagram: Parent/child schema for Table

    Voici le balisage correspondant.The following is the corresponding markup.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Là encore, un ou Block plusieurs éléments sont requis sous TableCellun.Again, one or more Block elements are required underneath a TableCell. Pour simplifier, insérons du texte dans la cellule.To make it simple, let's place some text inside the cell. Nous pouvons le faire à l' Paragraph aide d' Run un avec un élément.We can do this using a Paragraph with a Run element. Voici les segments correspondants du Paragraph diagramme montrant qu’un peut accepter un Inline élément et qu’un Run (un Inline élément) ne peut prendre que du texte brut.The following is the corresponding segments from the diagram showing that a Paragraph can take an Inline element and that a Run (an Inline element) can only take plain text.

    ![Schémas Schéma/enfant parent pour le]paragraphe(./media/flow-ovw-schemawalkthrough3.png "Flow_Ovw_SchemaWalkThrough3")Diagram: Parent/child schema for Paragraph

    Schémas Schéma/enfant parent pour RunDiagram: Parent/Child schema for Run

Voici le balisage de l’exemple complet.The following is the entire example in markup.

<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 programmationWorking with TextElement Content Programmatically

Le contenu d’un TextElement est constitué par des collections. par conséquent, la manipulation par programmation du contenu TextElement des objets s’effectue en utilisant ces collections.The contents of a TextElement is made up by collections and so programmatically manipulating the contents of TextElement objects is done by working with these collections. Il existe trois collections différentes utilisées par TextElement les classes dérivées de:There are three different collections used by TextElement -derived classes:

Vous pouvez manipuler (ajouter ou supprimer des éléments) de ces collections en utilisant les propriétésrespectives des Inlines, des blocset des ListItems.You can manipulate (add or remove items) from these collections using the respective properties of Inlines, Blocks, and ListItems. Les exemples suivants montrent comment manipuler le contenu d’une étendue à l’aide de la propriété Inlines.The following examples show how to manipulate the contents of a Span using the Inlines property.

Notes

Table utilise plusieurs collections pour manipuler son contenu, mais ces collections ne sont pas abordées ici.Table uses several collections to manipulate its contents, but they are not covered here. Pour plus d’informations, consultez vue d’ensemble des tables.For more information, see Table Overview.

L’exemple suivant crée un nouvel Span objet, puis utilise la Add méthode pour ajouter deux séquences de texte Spanen tant qu’enfants de contenu du.The following example creates a new Span object, and then uses the Add method to add two text runs as content children of the 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 nouvel Run élément et l’insère au début Spande.The following example creates a new Run element and inserts it at the beginning of the 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 Spande.The following example deletes the last Inline element in the Span.

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

L’exemple suivant efface tout le contenu (Inline éléments) Spande.The following example clears all of the contents (Inline elements) from the Span.

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

Types partageant ce modèle de contenuTypes That Share This Content Model

Les types suivants héritent de TextElement la classe et peuvent être utilisés pour afficher le contenu décrit dans cette vue d’ensemble.The following types inherit from the TextElement class and may be used to display the content described in this overview.

Bold, Figure, Floater, Hyperlink, InlineUIContainer, Italic, LineBreak, List, ListItem, Paragraph, Run, Section, Span, Table, Underline.Bold, Figure, Floater, Hyperlink, InlineUIContainer, Italic, LineBreak, List, ListItem, Paragraph, Run, Section, Span, Table, Underline.

Notez que cette liste comprend uniquement des types non abstraits distribués SDK WindowsWindows SDKavec le.Note that this list only includes nonabstract types distributed with the SDK WindowsWindows SDK. Vous pouvez utiliser d’autres types qui héritent de TextElement.You may use other types that inherit from TextElement.

Types pouvant contenir des objets TextElementTypes That Can Contain TextElement Objects

Consultez modèle de contenu WPF.See WPF Content Model.

Voir aussiSee also