Información general sobre el modelo de contenido de TextElementTextElement Content Model Overview

Esta información general del modelo de TextElementcontenido describe el contenido admitido para un archivo .This content model overview describes the supported content for a TextElement. La Paragraph clase es TextElementun tipo de .The Paragraph class is a type of TextElement. Un modelo de contenido describe qué objetos o elementos se pueden contener en otros.A content model describes what objects/elements can be contained in others. Esta información general resume el modelo de TextElementcontenido utilizado para los objetos derivados de .This overview summarizes the content model used for objects derived from TextElement. Para obtener más información, consulte Información general del documentode flujo .For more information, see Flow Document Overview.

Diagrama del modelo de contenidoContent Model Diagram

En el diagrama siguiente se resume el TextElement modelo de contenido TextElement para las clases derivadas, así como cómo encajan otras clases que no son de clases en este modelo.The following diagram summarizes the content model for classes derived from TextElement as well as how other non- TextElement classes fit into this model.

Diagrama: Esquema de contención de contenido dinámicoDiagram: Flow content containment schema

Como se puede ver en el diagrama anterior, los elementos secundarios permitidos para un Block elemento no Inline están necesariamente determinados por si una clase se deriva de la clase o una clase.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. Por ejemplo, Span una Inline(una clase derivada) Inline solo puede Figure tener elementos secundarios, pero una (también una Inlineclase derivada) solo puede tener Block elementos secundarios.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. Por tanto, un diagrama es útil para determinar rápidamente qué elemento puede incluirse en otro.Therefore, a diagram is useful for quickly determining what element can be contained in another. Por ejemplo, vamos a usar el diagrama para determinar cómo RichTextBoxconstruir el contenido de flujo de un archivo .As an example, let's use the diagram to determine how to construct the flow content of a RichTextBox.

  1. A RichTextBox debe FlowDocument contener un que, Blocka su vez, debe contener un objeto derivado.A RichTextBox must contain a FlowDocument which in turn must contain a Block-derived object. A continuación, se muestra el segmento correspondiente del diagrama anterior.The following is the corresponding segment from the preceding diagram.

    Diagrama: Reglas de contención de RichTextBoxDiagram: RichTextBox containment rules

    Llegados a este punto, esta es la apariencia que podría tener el marcado.Thus far, this is what the markup might look like.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Según el diagrama, Block hay varios elementos Section Tablepara Listelegir, entre los que se incluyen , BlockUIContainer Paragraph, , y (consulte Clases derivadas de bloques en el diagrama anterior).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). Digamos que queremos Tableun .Let's say we want a Table. Según el diagrama anterior, Table TableRowGroup a TableRow contiene un TableCell contenedor de Blockelementos, que contienen elementos que contienen un objeto derivado.According to the preceding diagram, a Table contains a TableRowGroup containing TableRow elements, which contain TableCell elements which contain a Block-derived object. El siguiente es el Table segmento correspondiente para tomar del diagrama anterior.The following is the corresponding segment for Table taken from the preceding diagram.

    Diagrama: esquema secundario/padre para la tablaDiagram: Parent/child schema for Table

    A continuación, se muestra el marcado correspondiente.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. Una vez más, uno o más Block elementos son necesarios debajo de un TableCellarchivo .Again, one or more Block elements are required underneath a TableCell. Para facilitar el proceso, vamos a colocar texto dentro de la celda.To make it simple, let's place some text inside the cell. Podemos hacer esto Paragraph usando Run un con un elemento.We can do this using a Paragraph with a Run element. A continuación se muestran los segmentos correspondientes del diagrama que muestran que un Paragraph puede tomar un Inline elemento y que un Run (un Inline elemento) sólo puede tomar texto sin formato.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.

    Diagrama: Esquema secundario/padre para párrafoDiagram: Parent/child schema for Paragraph

    Diagrama: Esquema primario/secundario para EjecutarDiagram: Parent/Child schema for Run

A continuación se muestra el ejemplo completo en el marcado.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>

Trabajar con contenido de TextElement mediante programaciónWorking with TextElement Content Programmatically

El contenido TextElement de a se compone de colecciones y, por lo tanto, la manipulación mediante programación del contenido de TextElement los objetos se realiza trabajando con estas colecciones.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. Hay tres colecciones TextElement diferentes utilizadas por las clases derivadas:There are three different collections used by TextElement -derived classes:

Puede manipular (agregar o quitar elementos) de estas colecciones utilizando las propiedades respectivas de Inlines, Blocksy ListItems.You can manipulate (add or remove items) from these collections using the respective properties of Inlines, Blocks, and ListItems. En los ejemplos siguientes se muestra cómo manipular el contenido de un Span mediante el Inlines propiedad.The following examples show how to manipulate the contents of a Span using the Inlines property.

Nota

El objeto Table usa varias colecciones para manipular su contenido, pero no se describen aquí.Table uses several collections to manipulate its contents, but they are not covered here. Para obtener más información, consulte Información general sobre tablas.For more information, see Table Overview.

En el ejemplo Span siguiente se crea Add un nuevo objeto y, a Spancontinuación, se usa el método para agregar dos ejecuciones de texto como elementos secundarios de contenido del archivo .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..."))

En el ejemplo Run siguiente se crea un nuevo Spanelemento y se inserta al principio del archivo .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)

En el ejemplo siguiente Inline se Spanelimina el último elemento del archivo .The following example deletes the last Inline element in the Span.

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

En el ejemplo siguiente seInline borra todo Spanel contenido ( elementos) del archivo .The following example clears all of the contents (Inline elements) from the Span.

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

Tipos que comparten este modelo de contenidoTypes That Share This Content Model

Los siguientes tipos TextElement heredan de la clase y se pueden usar para mostrar el contenido descrito en esta información general.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.

Tenga en cuenta que esta lista solo incluye tipos no abstractos distribuidos con el Windows SDK.Note that this list only includes nonabstract types distributed with the Windows SDK. Puede usar otros tipos TextElementque hereden de .You may use other types that inherit from TextElement.

Tipos que pueden contener objetos TextElementTypes That Can Contain TextElement Objects

Consulte Modelo de contenido de WPF.See WPF Content Model.

Consulte tambiénSee also