Sdílet prostřednictvím


Přehled modelu obsahu TextElement

Tento model obsahu popisuje podporovaný obsah pro TextElement. Třída Paragraph je typ TextElement. Model obsahu popisuje, jaké objekty a prvky mohou být obsaženy v jiných. Tento přehled shrnuje model obsahu používaný pro objekty odvozené z TextElement. Další informace najdete v tématu Přehled tokového dokumentu.

Diagram modelu obsahu

Následující diagram shrnuje model obsahu pro třídy odvozené z TextElement a také to, jak do tohoto modelu zapadají jiné třídy, které nejsou TextElement.

Diagram : Schéma řízení obsahu toku

Jak je vidět z předchozího diagramu, podřízené prvky povolené pro určitý prvek nemusí nutně určovat, zda je třída odvozena z třídy Block nebo z třídy Inline. Například Span (Inlineodvozená třída) může mít pouze Inline podřízené prvky, ale Figure (také Inline-odvozená třída) může mít pouze Block podřízených elementů. Diagram je proto užitečný k rychlému určení toho, který prvek může být obsažen v jiném prvku. Jako příklad použijeme diagram k určení, jak vytvořit obsah toku RichTextBox.

  1. RichTextBox musí obsahovat FlowDocument, který zase musí obsahovat objekt odvozený z Block. Následuje odpovídající segment z předchozího diagramu.

    Diagram : Pravidla zahrnutí RichTextBoxu

    Zatím to vypadá takto.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Podle diagramu existuje několik Block prvků, ze které si můžete vybrat, včetně Paragraph, Section, Table, Lista BlockUIContainer (viz třídy odvozené od bloku v předchozím diagramu). Řekněme, že chceme Table. Podle předchozího diagramu Table obsahuje TableRowGroup, které obsahují prvky TableRow, tyto prvky obsahují TableCell prvky, které obsahují objekt odvozený z Block. Následuje odpovídající segment pro Table převzatý z předchozího diagramu.

    diagram : Nadřazené/podřízené schéma pro tabulku

    Následuje odpovídající značení.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Jeden nebo více Block prvků je opět vyžadován pod TableCell. Abychom to mohli jednoduše udělat, dejte do buňky nějaký text. Můžeme to udělat pomocí Paragraph s prvkem Run. Následuje odpovídající segment z diagramu znázorňující, že Paragraph může obsahovat prvek Inline a že Run (element Inline) může obsahovat pouze prostý text.

    Diagram: Schéma nadřazenosti a podřízenosti pro odstavec

    Diagram : Nadřazené/podřízené schéma pro spuštění

Následuje celý příklad v kódu.

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

Práce s obsahem TextElement prostřednictvím kódu programu

Obsah TextElement se skládá z kolekcí a tak programově manipuluje s obsahem TextElement objektů pomocí těchto kolekcí. Třídy TextElement -derived používají tři různé kolekce:

S těmito kolekcemi můžete manipulovat (přidávat nebo odebírat položky) pomocí příslušných vlastností vložených prvků, blokůa položek seznamu. Následující příklady ukazují, jak manipulovat s obsahem Span pomocí Inlines vlastnost.

Poznámka

Tabulka používá několik kolekcí k manipulaci se svým obsahem, ale nejsou zde podrobně popsány. Další informace najdete v přehledu tabulky.

Následující příklad vytvoří nový objekt Span, a pak použije metodu Add pro přidání dvou textových bloků jako obsahové děti 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..."))

Následující příklad vytvoří nový Run element a vloží jej na začátek 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)

Následující příklad odstraní poslední Inline prvek v Span.

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

Následující příklad vymaže veškerý obsah (Inline elementy) z Span.

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

Typy, které sdílejí tento model obsahu

Následující typy dědí z třídy TextElement a mohou být použity k zobrazení obsahu popsaného v tomto přehledu.

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

Všimněte si, že tento seznam obsahuje pouze neabstraktní typy distribuované se sadou Windows SDK. Můžete použít jiné typy, které dědí z TextElement.

Typy, které mohou obsahovat objekty TextElement

Vizte model obsahu WPF.

Viz také