共用方式為


TextElement 內容模型概觀

更新:2007 年 11 月

本內容模型概觀說明 TextElement 支援的內容。Paragraph 類別屬於 TextElement 型別。內容模型可說明其他物件/項目可包含的物件/項目。本概觀將摘要說明衍生自 TextElement 的物件所適用的內容模型。如需詳細資訊,請參閱非固定格式文件概觀

這個主題包含下列章節。

  • 內容模型圖表
  • 以程式設計方式使用 TextElement 內容
  • 共用此內容模型的型別
  • 可包含 TextElement 物件的型別
  • 相關主題

內容模型圖表

下圖摘要說明衍生自 TextElement 的類別所適用的內容模型,以及其他可包含在此模型中的非 TextElement 類別。

圖表:非固定格式內容內含項目結構描述

如上圖所示,某個項目所允許的子系,不一定取決於類別是衍生自 Block 類別還是 Inline 類別。例如,Span (Inline 的衍生類別) 只能具有 Inline 子項目,但 Figure (也是 Inline 的衍生類別) 只能具有 Block 子項目。因此,圖表有助於快速判斷可包含於其他項目的項目。例如,我們將使用圖表來決定如何建構 RichTextBox 的非固定格式內容。

  1. RichTextBox 必須包含 FlowDocument,而後者必須包含 Block 的衍生物件。下列是上圖中的對應區段。

    圖表:RichTextBox 內含項目規則

    到此為止,以下是標記的相關程式碼。

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. 根據圖表,有多種 Block 項目可供選擇,包括 ParagraphSectionTableListBlockUIContainer (請參閱上圖的區塊衍生類別)。假設我們需要 Table。根據上圖,Table 含有內含 TableRow 項目的 TableRowGroup,而後者又包含具有 Block 衍生物件的 TableCell 項目。下列是取自上圖之 Table 的對應區段。

    圖表:Table 的父代/子系結構描述

    下列是對應的標記。

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
    
      </FlowDocument>
    </RichTextBox>
    
  3. 同樣地,TableCell 下必須要有一個或多個 Block 項目。為了簡化,我們在儲存格中加入一些文字。我們可以使用 ParagraphRun 項目來執行此動作。下列是圖表中的對應區段,其中顯示 Paragraph 可採用 Inline 項目,而 Run (Inline 項目) 只能採用純文字。

    圖表:Paragraph 的父代/子系結構描述

     

    圖表:Run 的父代/子系結構描述

下列是標記的完整範例。

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://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>

以程式設計方式使用 TextElement 內容

TextElement 的內容由集合所構成,因此 TextElement 物件內容的程式化操作可透過這些集合的使用來完成。TextElement 的衍生類別可使用三種不同的集合:

您可以分別使用 InlinesBlocksListItems 等屬性,從這些集合進行操作 (加入或移除項目)。下列範例顯示如何使用 Inlines 屬性來操作 Span 的內容。

注意事項:

資料表可使用數個集合來操作其內容,但在此不加以說明。如需詳細資訊,請參閱資料表概觀

下列範例會建立新的 Span 物件,然後使用 Add 方法加入兩行文字,做為 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..."));

下列範例會建立新的 Run 項目,並將其插入至 Span 的開頭。

Run runx = new Run("Text to insert...");
spanx.Inlines.InsertBefore(spanx.Inlines.FirstInline, runx);

下列範例會刪除 Span 中的最後一個 Inline 項目。

spanx.Inlines.Remove(spanx.Inlines.LastInline);

下列範例會清除 Span 的所有內容 (Inline 項目)。

spanx.Inlines.Clear();

共用此內容模型的型別

下列型別繼承自 TextElement 類別,並可用來顯示此概觀所說明的內容。

BoldFigureFloaterHyperlinkInlineUIContainerItalicLineBreakListListItemParagraphRunSectionSpanTableUnderline.

請注意,此清單僅包含 Windows SDK 所散發的非抽象型別。您可以使用繼承自 TextElement 的其他型別。

可包含 TextElement 物件的型別

請參閱 WPF 內容模型

請參閱

工作

HOW TO:透過 Blocks 屬性管理 FlowDocument

HOW TO:透過 Blocks 屬性管理非固定格式內容項目

HOW TO:透過 Blocks 屬性管理 FlowDocument

HOW TO:透過 Columns 屬性管理資料表的資料行

HOW TO:透過 RowGroups 屬性管理資料表的資料列群組