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 rodič/dítě 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, InlineUIContainerItalicLineBreakListListItemParagraphRunSectionSpanTable. 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é