Przegląd Model zawartości TextElement
W tym omówieniu con tryb namiotu l opisano obsługiwaną zawartość dla elementu TextElement. Klasa Paragraph jest typem TextElementklasy . Con tryb namiotu l opisuje, jakie obiekty/elementy mogą być zawarte w innych. To omówienie zawiera podsumowanie con tryb namiotu l używanego dla obiektów pochodzących z TextElementelementu . Aby uzyskać więcej informacji, zobacz Flow Document Overview (Omówienie dokumentu przepływu).
Diagram modelu zawartości
Na poniższym diagramie przedstawiono podsumowanie wartości con tryb namiotu l 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 pochodna Inline) może zawierać tylko elementy podrzędne, ale Figure (również klasa pochodnaInline) może zawierać 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 obiektu RichTextBox.
Element RichTextBox musi zawierać element FlowDocument , który z kolei musi zawierać Blockobiekt pochodny. Poniżej znajduje się odpowiedni segment z poprzedniego diagramu.
Do tej pory tak 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 bloków na powyższym diagramie). Załóżmy, że chcemy .Table Zgodnie z powyższym diagramem element Table zawiera elementy zawierające TableRow elementy, które zawierają BlockTableCell obiekt TableRowGroup pochodny. Poniżej znajduje się odpowiedni segment dla Table pobranego 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 jakiś tekst w komórce. Możemy to zrobić przy użyciu Paragraph elementu z elementem Run . Poniżej przedstawiono odpowiednie segmenty z diagramu pokazujące, że Paragraph element może przyjmować element i że Run (Inlineelement) może przyjmować Inline 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>
Programowa praca z zawartością TextElement
Zawartość obiektu TextElement składa się z kolekcji, 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ść Paragraphpodrzędną elementów , Spani TextBlock .
BlockCollection: reprezentuje kolekcję Block elementów. BlockCollectiondefiniuje dozwoloną zawartość FlowDocumentpodrzędną elementów , , SectionListItem, TableCell, Floater, i Figure .
ListItemCollection: element zawartości przepływu reprezentujący określony element zawartości w uporządkowanym lub nieurządkowanym Listelemencie .
Można 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ą funkcji Span przy użyciu właściwości Inlines .
Uwaga
Tabela używa kilku kolekcji do manipulowania jego zawartością, ale nie są 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 obiektu 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 pliku 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ą z TextElement klasy i mogą służyć 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 Windows SDK. Możesz użyć innych typów dziedzicujących z programu TextElement.
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
.NET Desktop feedback