Cenni preliminari sul modello di contenuto TextElementTextElement Content Model Overview

Questa panoramica del modello di contenuto viene descritto il contenuto supportato per un TextElement.This content model overview describes the supported content for a TextElement. Il Paragraph classe è un tipo di TextElement.The Paragraph class is a type of TextElement. Un modello di contenuto descrive gli oggetti o gli elementi che possono essere contenuti in altri oggetti o elementi.A content model describes what objects/elements can be contained in others. Questa panoramica viene riepilogato il modello di contenuto utilizzato per oggetti derivati da TextElement.This overview summarizes the content model used for objects derived from TextElement. Per ulteriori informazioni, vedere Flow Document Overview.For more information, see Flow Document Overview.

Diagramma del modello di contenutoContent Model Diagram

Nel diagramma seguente viene riepilogato il modello di contenuto per le classi derivate da TextElement nonché altri non - TextElement classi rientrare in questo modello.The following diagram summarizes the content model for classes derived from TextElement as well as how other non- TextElement classes fit into this model.

Diagramma: schema di contenimento del contenuto dinamicoDiagram: Flow content containment schema

Come si può notare dal diagramma precedente, gli elementi figlio consentiti per un elemento non sono necessariamente determinati in base che una classe è derivata dal Block classe o un Inline 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. Ad esempio, un Span (un Inline-classe derivata) può avere solo Inline gli elementi figlio, ma un Figure (anche un Inline-classe derivata) può avere solo Block gli elementi figlio.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. Pertanto, un diagramma è utile per determinare rapidamente quale elemento può essere contenuto in un altro elemento.Therefore, a diagram is useful for quickly determining what element can be contained in another. Ad esempio, è possibile utilizzare il diagramma per determinare la modalità di costruzione del flusso di contenuto di un RichTextBox.As an example, let's use the diagram to determine how to construct the flow content of a RichTextBox.

  1. Oggetto RichTextBox deve contenere un FlowDocument che a sua volta deve contenere un Block-oggetto derivato.A RichTextBox must contain a FlowDocument which in turn must contain a Block-derived object. Di seguito viene riportato il segmento corrispondente del diagramma precedente.The following is the corresponding segment from the preceding diagram.

    Diagramma: regole di contenimento di RichTextBoxDiagram: RichTextBox containment rules

    Fino a questo punto, l'aspetto del markup potrebbe essere simile al seguente.Thus far, this is what the markup might look like.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. In base al diagramma, esistono alcune Block possibile scegliere di includere elementi Paragraph, Section, Table, List, e BlockUIContainer (vedere le classi derivate da Block nel diagramma precedente).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). Si supponga un Table.Let's say we want a Table. In base al diagramma precedente, un Table contiene un TableRowGroup contenente TableRow elementi, che contengono TableCell elementi che contengono un Block-oggetto derivato.According to the preceding diagram, a Table contains a TableRowGroup containing TableRow elements, which contain TableCell elements which contain a Block-derived object. Di seguito è riportato il corrispondente segmento per Table tratto dal diagramma precedente.The following is the corresponding segment for Table taken from the preceding diagram.

    Diagramma: schema padre/figlio per TableDiagram: Parent/child schema for Table

    Ecco il markup corrispondente.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. Nuovamente, uno o più Block elementi devono essere presenti in un TableCell.Again, one or more Block elements are required underneath a TableCell. Per rendere più chiaro l'esempio, viene inserito del testo nella cella.To make it simple, let's place some text inside the cell. È possibile farlo usando un Paragraph con un Run elemento.We can do this using a Paragraph with a Run element. Di seguito è riportato i corrispondenti segmenti del diagramma che illustra un Paragraph può richiedere un Inline elemento e che un Run (un Inline elemento) può accettare solo testo normale.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.

    Diagramma: schema padre/figlio per ParagraphDiagram: Parent/child schema for Paragraph

    Diagramma: schema padre/figlio per RunDiagram: Parent/Child schema for Run

Di seguito viene mostrato l'intero esempio a livello di markup.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>

Uso del contenuto TextElement a livello di codiceWorking with TextElement Content Programmatically

Il contenuto di un TextElement è costituito da raccolte e pertanto a livello di codice la modifica del contenuto di TextElement oggetti avviene quando si lavora con queste raccolte.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. Sono disponibili tre diverse raccolte utilizzate da TextElement -classi derivate:There are three different collections used by TextElement -derived classes:

È possibile modificare (aggiungere o rimuovere elementi) da queste raccolte utilizzando le rispettive proprietà di inline, blocchi, e ListItems.You can manipulate (add or remove items) from these collections using the respective properties of Inlines, Blocks, and ListItems. Nell'esempio seguente viene illustrato come modificare il contenuto di un intervallo mediante la inline proprietà.The following examples show how to manipulate the contents of a Span using the Inlines property.

Nota

Per modificare il contenuto di una tabella vengono usate diverse raccolte, che tuttavia non vengono illustrate in questa sezione.Table uses several collections to manipulate its contents, but they are not covered here. Per ulteriori informazioni, vedere Cenni preliminari su tabella.For more information, see Table Overview.

L'esempio seguente crea un nuovo Span oggetto e quindi viene utilizzato il Add metodo per aggiungere testo due sequenze come elementi figlio di contenuto di Span.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'esempio seguente crea un nuovo Run elemento che viene inserito all'inizio del Span.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)

Nell'esempio seguente viene eliminato l'ultimo Inline elemento il Span.The following example deletes the last Inline element in the Span.

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

Nell'esempio seguente viene cancellato tutto il contenuto (Inline elementi) dal Span.The following example clears all of the contents (Inline elements) from the Span.

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

Tipi che condividono questo modello di contenutoTypes That Share This Content Model

I seguenti tipi di ereditano il TextElement e può essere utilizzata per visualizzare il contenuto descritto in questa panoramica.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.

Si noti che questo elenco include solo i tipi non astratti distribuiti con il Windows SDKWindows SDK.Note that this list only includes nonabstract types distributed with the Windows SDKWindows SDK. È possibile utilizzare altri tipi che ereditano da TextElement.You may use other types that inherit from TextElement.

Tipi in grado di contenere oggetti TextElementTypes That Can Contain TextElement Objects

Vedere modello di contenuto WPF.See WPF Content Model.

Vedere ancheSee Also

Modificare un oggetto FlowDocument tramite la proprietà BlocksManipulate a FlowDocument through the Blocks Property
Modificare elementi di contenuto dinamico tramite la proprietà BlocksManipulate Flow Content Elements through the Blocks Property
Modificare un oggetto FlowDocument tramite la proprietà BlocksManipulate a FlowDocument through the Blocks Property
Modificare le colonne di una tabella tramite la proprietà ColumnsManipulate a Table's Columns through the Columns Property
Modificare i gruppi di righe di una tabella tramite la proprietà RowGroupsManipulate a Table's Row Groups through the RowGroups Property