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
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.
RichTextBox musí obsahovat FlowDocument, který zase musí obsahovat objekt odvozený z Block. Následuje odpovídající segment z předchozího diagramu.
Diagram
Zatím to vypadá takto.
<RichTextBox> <FlowDocument> <!-- One or more Block-derived object… --> </FlowDocument> </RichTextBox>
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
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>
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:
Diagram
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:
InlineCollection: Představuje kolekci prvků Inline. InlineCollection definuje povolený podřízený obsah prvků Paragraph, Spana TextBlock.
BlockCollection: Představuje kolekci prvků Block. BlockCollection definuje povolený podřízený obsah prvků FlowDocument, Section, ListItem, TableCell, Floatera Figure.
ListItemCollection: Prvek obsahu toku, který představuje konkrétní položku obsahu v seřazené nebo neuspořádané List.
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é
- Manipulovat s objektem FlowDocument prostřednictvím vlastnosti Blocks
- manipulaci s prvky obsahu toku prostřednictvím vlastností Bloků
- Manipulace s objektem FlowDocument prostřednictvím vlastnosti Blocks
- Manipulace se sloupci tabulky prostřednictvím vlastnosti Sloupce
- Manipulace se Skupinami Řádků v Tabulce Prostřednictvím Vlastnosti RowGroups
.NET Desktop feedback