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.
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.
A RichTextBox musí obsahovat objekt, který musí obsahovat FlowDocument -odvozený Blockobjekt. Následuje odpovídající segment z předchozího diagramu.
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, 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.
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>
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.
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 :
InlineCollection: Představuje kolekci Inline prvků. InlineCollection definuje povolený podřízený obsah Paragraph, Spana TextBlock elementy.
BlockCollection: Představuje kolekci Block prvků. BlockCollectiondefinuje povolený podřízený obsah FlowDocument, , SectionListItem, TableCell, Floater, a Figure elementy.
ListItemCollection: Prvek obsahu toku, který představuje určitou 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 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é
- Zpracování objektu FlowDocument prostřednictvím vlastnosti Blocks
- Zpracování elementů obsahu toku prostřednictvím vlastnosti Blocks
- Zpracování objektu FlowDocument prostřednictvím vlastnosti Blocks
- Zpracování sloupců tabulky prostřednictvím vlastnosti Columns
- Zpracování skupin řádků tabulky pomocí vlastnosti RowGroups
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro