Przegląd Model zawartości TextElement
W tym modelu zawartości opisano obsługiwaną zawartość dla elementu TextElement. Klasa Paragraph jest typem TextElement. Model zawartości opisuje, jakie obiekty/elementy mogą być zawarte w innych. To omówienie zawiera podsumowanie modelu zawartości używanego dla obiektów uzyskanych z TextElementelementu . Aby uzyskać więcej informacji, zobacz Flow Document Overview (Omówienie dokumentu Flow).
Diagram modelu zawartości
Na poniższym diagramie przedstawiono podsumowanie modelu zawartości dla klas pochodnych oraz TextElement sposobu dopasowania innych TextElement klas do tego modelu.

Jak widać na powyższym diagramie, elementy podrzędne dozwolone dla elementu nie muszą być określane przez to, czy klasa pochodzi z Block klasy, czy Inline klasy. Na przykład Span (klasa pochodnaInline) może mieć tylko elementy podrzędne, ale Figure (również klasa pochodnaInline) może mieć InlineBlock tylko elementy podrzędne. W związku z tym diagram jest przydatny do szybkiego określania, który element może być zawarty w innym. Na przykład użyjemy diagramu, aby określić sposób konstruowania zawartości przepływu elementu RichTextBox.
Element RichTextBox musi zawierać element FlowDocument , który z kolei musi zawierać Blockobiekt pochodny. Poniżej przedstawiono odpowiedni segment z poprzedniego diagramu.

Do tej pory jest to, jak może wyglądać znaczniki.
<RichTextBox> <FlowDocument> <!-- One or more Block-derived object… --> </FlowDocument> </RichTextBox>Zgodnie z diagramem istnieje kilka Block elementów do wyboru, w tym Paragraph, Section, Table, Listi BlockUIContainer (zobacz Klasy pochodne blokowe na powyższym diagramie). Załóżmy, że chcemy .Table Zgodnie z powyższym diagramem TableTableRowGroup element zawiera zawierające TableRow elementy, które zawierają elementy, które zawierają TableCellBlockobiekt pochodny. Poniżej znajduje się odpowiedni segment, który został Table pobrany z poprzedniego diagramu.

Poniżej znajduje się odpowiedni znacznik.
<RichTextBox> <FlowDocument> <Table> <TableRowGroup> <TableRow> <TableCell> <!-- One or more Block-derived object… --> </TableCell> </TableRow> </TableRowGroup> </Table> </FlowDocument> </RichTextBox>Ponownie co najmniej jeden Block element jest wymagany pod elementem TableCell. Aby ułatwić sobie to, umieśćmy tekst w komórce. Możemy to zrobić przy użyciu elementu Paragraph z elementem Run . Poniżej przedstawiono odpowiednie segmenty z diagramu pokazujące, że Paragraph element może przyjmować Inline element i że Run ( Inline element) może przyjmować zwykły tekst.


Poniżej przedstawiono cały przykład w adiustacji.
<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>
Programowe praca z zawartością TextElement
Zawartość obiektu TextElement jest składana przez kolekcje, a więc programowe manipulowanie zawartością TextElement obiektów odbywa się przez pracę z tymi kolekcjami. Istnieją trzy różne kolekcje używane przez TextElement klasy pochodne:
InlineCollection: reprezentuje kolekcję Inline elementów. InlineCollection definiuje dozwoloną zawartość podrzędną elementów Paragraph, Spani TextBlock .
BlockCollection: reprezentuje kolekcję Block elementów. BlockCollectiondefiniuje dozwoloną zawartość podrzędną elementów FlowDocument, , SectionListItem, TableCell, Floateri Figure .
ListItemCollection: element zawartości przepływu reprezentujący określony element zawartości w uporządkowanym lub nieurządkowanym elemencie List.
Możesz manipulować (dodawać lub usuwać elementy) z tych kolekcji przy użyciu odpowiednich właściwości linii, bloków i listItems. W poniższych przykładach pokazano, jak manipulować zawartością elementu Span przy użyciu właściwości Inlines .
Uwaga
Tabela używa kilku kolekcji do manipulowania jego zawartością, ale nie zostały one omówione tutaj. Aby uzyskać więcej informacji, zobacz Omówienie tabeli.
Poniższy przykład tworzy nowy Span obiekt, a następnie używa Add metody , aby dodać dwa uruchomienia tekstu jako elementy podrzędne zawartości .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..."))
Poniższy przykład tworzy nowy Run element i wstawia go na początku elementu 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)
Poniższy przykład usuwa ostatni Inline element w elemecie Span.
spanx.Inlines.Remove(spanx.Inlines.LastInline);
spanx.Inlines.Remove(spanx.Inlines.LastInline)
Poniższy przykład czyści całą zawartość (Inline elementy) z elementu Span.
spanx.Inlines.Clear();
spanx.Inlines.Clear()
Typy współużytkujące ten model zawartości
Następujące typy dziedziczą po TextElement klasie i mogą być używane do wyświetlania zawartości opisanej w tym omówieniu.
Bold, Figure, Floater, Hyperlink, InlineUIContainer, Italic, LineBreak, List, ListItem, Paragraph, Run, Section, Span, Table, Underline.
Należy pamiętać, że ta lista zawiera tylko typy nieabstraktowe dystrybuowane za pomocą zestawu SDK Windows. Możesz użyć innych typów, które dziedziczą z TextElementklasy .
Typy, które mogą zawierać obiekty TextElement
Zobacz Model zawartości WPF.
Zobacz też
- Zarządzanie parametrem FlowDocument przez właściwość Blocks
- Zarządzanie przepływem elementów zawartości za pomocą właściwości Blocks
- Zarządzanie parametrem FlowDocument przez właściwość Blocks
- Zarządzanie kolumnami tabeli za pomocą właściwości Columns
- Zarządzanie grupami wierszy tabeli za pomocą właściwości RowGroups