Freigeben über


Übersicht über das TextElement-Inhaltsmodell

In dieser Inhaltsmodellübersicht wird der unterstützte Inhalt für ein TextElement beschrieben. Die Paragraph-Klasse ist ein Typ von TextElement. Ein Inhaltsmodell beschreibt, welche Objekte/Elemente in anderen enthalten sein können. In dieser Übersicht wird das Inhaltsmodell zusammengefasst, das für von TextElement abgeleitete Objekte verwendet wird. Weitere Informationen finden Sie unter Übersicht über Flussdokumente.

Dieses Thema enthält folgende Abschnitte.

  • Inhaltsmodelldiagramm
  • Programmgesteuertes Arbeiten mit TextElement-Inhalt
  • Typen, für die dieses Inhaltsmodell freigegeben wird
  • Typen, die TextElement-Objekte enthalten können
  • Verwandte Abschnitte

Inhaltsmodelldiagramm

Im folgenden Diagramm wird das Inhaltsmodell für Klassen zusammengefasst, die von TextElement abgeleitet sind, sowie für andere Klassen als die TextElement-Klasse, die in dieses Modell passen.

Diagramm: Flussinhalt-Kapselungsschema

Wie aus dem vorherigen Diagramm ersichtlich, hängen die für ein Element zulässigen untergeordneten Elemente nicht unbedingt davon ab, ob eine Klasse von der Block-Klasse oder einer Inline-Klasse abgeleitet wird. Beispielsweise kann Span (eine von Inline abgeleitete Klasse) nur untergeordnete Inline-Elemente haben, während Figure (ebenfalls eine von Inline abgeleitete Klassen) nur untergeordnete Block-Elemente haben kann. Aus diesem Grund ist ein Diagramm nützlich, um schnell zu bestimmen, welches Element in einem anderen enthalten sein kann. Als Beispiel kann das Diagramm verwendet werden, um festzustellen, wie der Fließinhalt eines RichTextBox-Elements konstruiert werden kann.

  1. Ein RichTextBox-Element muss ein FlowDocument enthalten, das wiederum ein von einem Block abgeleitetes Objekt enthalten muss. Im Folgenden wird das entsprechende Segment des vorherigen Diagramms dargestellt.

    Diagramm: RichTextBox-Kapselungsregeln

    So könnte das Markup zu diesem Zeitpunkt aussehen.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Gemäß dem Diagramm können Sie zwischen mehreren Block-Elementen wählen, darunter Paragraph, Section, Table, List und BlockUIContainer (siehe Von Block abgeleitete Klassen im vorherigen Diagramm). Angenommen, das gewünschte Element ist eine Table. Gemäß dem vorherigen Diagramm enthält eine Table eine TableRowGroup, in der TableRow-Elemente enthalten sind, die TableCell-Elemente enthalten, welche ein von einem Block abgeleitetes Objekt enthalten. Im Folgenden wird das entsprechende Segment für Table, dargestellt, das aus dem vorherigen Diagramm stammt.

    Diagramm: Übergeordnetes/Untergeordnetes Schema für Tabelle

    Im Folgenden wird das entsprechende Markup dargestellt.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Wiederum sind ein oder mehrere Block-Elemente unter einer TableCell erforderlich. Um bei einem einfachen Beispiel zu bleiben, platzieren Sie einen kurzen Text in der Zelle. Dazu können Sie einen Paragraph mit einem Run-Element verwenden. Im Folgenden werden die entsprechenden Segmente aus dem Diagramm dargestellt, die zeigen, dass ein Paragraph ein Inline-Element und Run (ein Inline-Element) lediglich Nur-Text enthalten kann.

    Diagramm: Übergeordnetes/Untergeordnetes Schema für Absatz

     

    Diagramm: Übergeordnetes/Untergeordnetes Schema für Ausführung

Im Folgenden wird das vollständige Beispiel in Markup dargestellt.

<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>

Programmgesteuertes Arbeiten mit TextElement-Inhalt

Der Inhalt von einem TextElement besteht aus Auflistungen. Durch das Arbeiten mit diesen Auflistungen wird der Inhalt von TextElement-Objekten programmgesteuert bearbeitet. Von TextElement abgeleitete Klassen verwenden drei verschiedene Auflistungen:

Sie können diese Auflistungen mithilfe der jeweiligen Eigenschaften von Inlines, Blocks und ListItems bearbeiten (Elemente hinzufügen oder entfernen). Die folgenden Beispiele zeigen, wie der Inhalt eines Span-Elements mit der Inlines-Eigenschaft bearbeitet wird.

HinweisHinweis

Das Table-Element verwendet zum Bearbeiten seines Inhalts mehrere Auflistungen, die hier jedoch nicht vorgestellt werden.Weitere Informationen finden Sie unter Übersicht über Tabellen.

Im folgenden Beispiel wird ein neues Span-Objekt erstellt. Danach werden mithilfe der Add-Methode zwei Textausführungen als untergeordnete Inhaltselemente des Span-Objekts hinzugefügt.

            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..."));

Im folgenden Beispiel wird ein neues Run-Element erstellt und am Anfang von Span eingefügt.

            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);

Im folgenden Beispiel wird das letzte Inline-Element in Span gelöscht.

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

Im folgenden Beispiel wird der gesamte Inhalt (Inline-Elemente) aus Span gelöscht.

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

Typen, für die dieses Inhaltsmodell freigegeben wird

Die folgenden Typen erben von der TextElement-Klasse und können verwendet werden, um den in dieser Übersicht beschriebenen Inhalt anzuzeigen.

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

Beachten Sie, dass diese Liste nur nicht abstrakte Typen umfasst, die mit dem Windows SDK verteilt werden. Sie verwenden möglicherweise andere Typen, die von TextElement erben.

Typen, die TextElement-Objekte enthalten können

Siehe WPF-Inhaltsmodell.

Siehe auch

Aufgaben

Gewusst wie: Bearbeiten von einem FlowDocument mit der Blocks-Eigenschaft

Gewusst wie: Bearbeiten von fortlaufenden Inhaltselementen mit der Blocks-Eigenschaft

Gewusst wie: Bearbeiten von einem FlowDocument mit der Blocks-Eigenschaft

Gewusst wie: Bearbeiten der Spalten einer Tabelle mit der Columns-Eigenschaft

Gewusst wie: Bearbeiten der Zeilengruppen einer Tabelle mit der RowGroups-Eigenschaft