Sdílet prostřednictvím


Přehled modelu obsahu TextElement

Tento con režim stanu l přehled popisuje podporovaný obsah pro určitý TextElement. Třída Paragraph je typ TextElement. A con režim stanu l describes what objects/elements can becontained in others. Tento přehled shrnuje kon režim stanu l použitý pro objekty odvozené z TextElement. Další informace najdete v tématu Přehled dokumentu toku.

Diagram modelu obsahu

Následující diagram shrnuje kon režim stanu l pro třídy odvozené TextElement a také to, jak se do tohoto modelu nevejdou jiné TextElement třídy.

Diagram: Flow content containment schema

Jak je vidět z předchozího diagramu, podřízené objekty povolené pro prvek nemusí nutně určovat, zda je třída odvozena od Block třídy nebo Inline třídy. Například Span (odvozená Inlinetřída) může mít Inline pouze podřízené prvky, ale Figure třída (také Inline-odvozená třída) může mít Block pouze podřízené prvky. 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 objektu RichTextBox.

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

    Diagram: RichTextBox containment rules

    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, TableSection, , 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 prvky TableRowGroupTableRow obsahující prvky, které obsahují TableCell elementy, které obsahují -odvozený Blockobjekt. Následuje odpovídající segment pro Table převzatý z předchozího diagramu.

    Diagram: Parent/child schema for Table

    Následuje odpovídající kód.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Znovu, jeden nebo více Block prvků jsou vyžadovány pod .TableCell Abychom to mohli jednoduše udělat, dejte do buňky nějaký text. Můžeme to udělat pomocí elementu ParagraphRun . Následuje odpovídající segmenty z diagramu ukazující, že Paragraph může vzít Inline prvek a že Run ( Inline element) může přijímat pouze prostý text.

    Diagram: Parent/child schema for Paragraph

    Diagram: Parent/Child schema for Run

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 kolekce TextElement se skládá z kolekcí, takže práce s těmito kolekcemi probíhá prostřednictvím kódu programu manipulace s obsahem TextElement objektů. Existují tři různé kolekce používané odvozenými třídami TextElement :

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

Poznámka:

Tabulka používá několik kolekcí k manipulaci s jeho obsahem, ale nejsou zde popsány. Další informace najdete v tématu Přehled tabulky.

Následující příklad vytvoří nový Span objekt a pak použije metodu Add k přidání dvou text běží jako podřízený obsah objektu 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 prvek 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 souboru Span.

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

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

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

Typy, které sdílejí tento model obsahu

Následující typy dědí z TextElement třídy 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

Viz Model obsahu WPF.

Viz také