Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit overzicht van het inhoudsmodel wordt de ondersteunde inhoud voor een TextElementbeschreven. De Paragraph klasse is een type TextElement. In een inhoudsmodel wordt beschreven welke objecten/elementen in andere objecten kunnen worden opgenomen. Dit overzicht bevat een overzicht van het inhoudsmodel dat wordt gebruikt voor objecten die zijn afgeleid van TextElement. Zie Flow-documentoverzichtvoor meer informatie.
Diagram van inhoudsmodel
In het volgende diagram ziet u een overzicht van het inhoudsmodel voor klassen die zijn afgeleid van TextElement en hoe andere niet-TextElement
klassen in dit model passen.
Zoals te zien is in het voorgaande diagram, worden de toegestane elementen voor een element niet noodzakelijkerwijs bepaald door of een klasse is afgeleid van Block of Inline. Een Span (een Inline-afgeleide klasse) kan bijvoorbeeld alleen Inline onderliggende elementen bevatten, maar een Figure (ook een Inline-afgeleide klasse) kan alleen Block onderliggende elementen bevatten. Daarom is een diagram handig om snel te bepalen welk element in een ander element kan worden opgenomen. Laten we bijvoorbeeld het diagram gebruiken om te bepalen hoe de stroominhoud van een RichTextBoxmoet worden samengesteld.
Een RichTextBox moet een FlowDocument bevatten die op zijn beurt een Block-afgeleide object moet bevatten. Hier volgt het bijbehorende segment uit het voorgaande diagram.
Tot nu toe is dit hoe de markeringen eruit kunnen zien.
<RichTextBox> <FlowDocument> <!-- One or more Block-derived object… --> </FlowDocument> </RichTextBox>
Volgens het diagram zijn er verschillende Block elementen waaruit u kunt kiezen, waaronder Paragraph, Section, Table, Listen BlockUIContainer (zie blokklassen in het voorgaande diagram). Stel dat we een Tablewillen. Volgens het voorgaande diagram bevat een Table een TableRowGroup met TableRow elementen, die TableCell elementen bevatten die een Block-afgeleide object bevatten. Hier volgt het bijbehorende segment voor Table uit het voorgaande diagram.
Hieronder ziet u de bijbehorende markeringen.
<RichTextBox> <FlowDocument> <Table> <TableRowGroup> <TableRow> <TableCell> <!-- One or more Block-derived object… --> </TableCell> </TableRow> </TableRowGroup> </Table> </FlowDocument> </RichTextBox>
Nogmaals, een of meer Block elementen zijn vereist onder een TableCell. Om het eenvoudig te maken, plaatsen we tekst in de cel. We kunnen dit doen met behulp van een Paragraph met een Run element. Hier volgen de bijbehorende segmenten uit het diagram waarin wordt weergegeven dat een Paragraph een Inline element kan aannemen en dat een Run (een Inline element) alleen tekst zonder opmaak kan opnemen.
Hier volgt het hele voorbeeld in markeringen.
<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>
Programmatisch werken met TextElement-inhoud
De inhoud van een TextElement bestaat uit verzamelingen en zo wordt programmatisch de inhoud van TextElement objecten bewerkt door met deze verzamelingen te werken. Er zijn drie verschillende verzamelingen die door TextElement -derived klassen worden gebruikt:
InlineCollection: Vertegenwoordigt een verzameling Inline elementen. InlineCollection definieert de toegestane onderliggende inhoud van de Paragraph, Spanen TextBlock elementen.
BlockCollection: Vertegenwoordigt een verzameling Block elementen. BlockCollection definieert de toegestane onderliggende inhoud van de elementen FlowDocument, Section, ListItem, TableCell, Floateren Figure.
ListItemCollection: een flow-content element dat een bepaald inhoudsitem in een geordende of ongeordende Listvertegenwoordigt.
U kunt items uit deze verzamelingen bewerken (toevoegen of verwijderen) met behulp van de respectieve eigenschappen van Inlines, Blokkenen ListItems. In de volgende voorbeelden ziet u hoe u de inhoud van een span bewerkt met behulp van de eigenschap Inlines.
Notitie
Tabel maakt gebruik van verschillende verzamelingen om de inhoud ervan te bewerken, maar deze worden hier niet behandeld. Zie Tabeloverzichtvoor meer informatie.
In het volgende voorbeeld wordt een nieuw Span-object gemaakt en vervolgens wordt de Add
-methode gebruikt om twee tekstsegmenten toe te voegen als inhoudelijke kinderen van de 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..."))
In het volgende voorbeeld wordt een nieuw Run-element gemaakt en ingevoegd aan het begin van het 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)
In het volgende voorbeeld wordt het laatste Inline element in de Spanverwijderd.
spanx.Inlines.Remove(spanx.Inlines.LastInline);
spanx.Inlines.Remove(spanx.Inlines.LastInline)
In het volgende voorbeeld worden alle inhoud (Inline elementen) uit de Spangewist.
spanx.Inlines.Clear();
spanx.Inlines.Clear()
Typen die dit inhoudsmodel delen
De volgende typen nemen over van de TextElement-klasse en kunnen worden gebruikt om de inhoud weer te geven die in dit overzicht wordt beschreven.
Bold, Figure, Floater, Hyperlink, InlineUIContainer, Italic, LineBreak, List, ListItem, Paragraph, Run, Section, Span, Table, Underline.
Houd er rekening mee dat deze lijst alleen niet-abstracttypen bevat die zijn gedistribueerd met de Windows SDK. U kunt andere typen gebruiken die overnemen van TextElement.
Typen die TextElement-objecten kunnen bevatten
Zie WPF-inhoudsmodel.
Zie ook
.NET Desktop feedback