TextElement İçerik Modeline Genel Bakış

Bu con çadır modu l genel bakış, için TextElementdesteklenen içeriği açıklar. Paragraph sınıfı bir türüdürTextElement. Con çadır modu l, diğerlerinde hangi nesnelerin/öğelerin bulunabileceğini açıklar. Bu genel bakış, öğesinden TextElementtüretilen nesneler için kullanılan con çadır modu l özetlemektedir. Daha fazla bilgi için bkz . Flow Belgesine Genel Bakış.

İçerik Modeli Diyagramı

Aşağıdaki diyagramda, türetilen TextElement sınıflar için con çadır modu l ve diğer sınıf dışı TextElement sınıfların bu modele nasıl sığması özetlenmiştir.

Diagram: Flow content containment schema

Önceki diyagramda da görülebileceği gibi, bir öğe için izin verilen alt öğeler, bir sınıfın sınıftan mı yoksa Inline sınıftan Block mı türetileceğine göre belirlenemez. Örneğin, bir Span ( Inlinetüretilmiş sınıf) yalnızca alt öğelere sahip Inline olabilir, ancak Figure (aynı zamanda türetilmiş bir Inlinesınıf) yalnızca alt öğelere sahip Block olabilir. Bu nedenle diyagram, başka bir öğede hangi öğenin bulunabileceğini hızla belirlemek için kullanışlıdır. Örnek olarak, bir akış içeriğinin RichTextBoxnasıl oluşturacağınızı belirlemek için diyagramı kullanalım.

  1. FlowDocument ARichTextBox, sırayla türetilmiş bir nesne içermesi gereken bir Blockiçermelidir. Yukarıdaki diyagramda karşılık gelen segment aşağıdadır.

    Diagram: RichTextBox containment rules

    Şu ana kadar, işaretleme böyle görünebilir.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Diyagrama göre , , Section, TableListve BlockUIContainer dahil olmak üzere Paragraphseçebileceğiniz birkaç Block öğe vardır (önceki diyagramda blok türetilmiş sınıflar bölümüne bakın). Diyelim ki bir Table. Yukarıdaki diyagrama göre , Table türetilmiş bir TableRowGroupTableRow nesne TableCell içeren öğeleri içeren öğeleri Blockiçerir. Aşağıdaki, önceki diyagramdan alınan ilgili Table segmenttir.

    Diagram: Parent/child schema for Table

    Aşağıda karşılık gelen işaretleme yer alır.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Bir kez daha, altında bir TableCellveya daha fazla Block öğe gereklidir. Bunu basit hale getirmek için hücrenin içine biraz metin yerleştirelim. Bunu bir ParagraphRun öğesiyle kullanarak yapabiliriz. Aşağıda, bir öğesinin alabildiğini ve Run bir Paragraph öğenin (Inlineöğe) yalnızca düz metin alabildiğini Inline gösteren diyagramdaki ilgili segmentler yer alır.

    Diagram: Parent/child schema for Paragraph

    Diagram: Parent/Child schema for Run

Aşağıda, işaretlemedeki tüm örnek verilmiştir.

<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>

Program Aracılığıyla TextElement İçeriğiyle Çalışma

öğesinin TextElement içeriği koleksiyonlar tarafından oluşturulur ve bu nedenle nesnelerin içeriğini TextElement program aracılığıyla düzenleme işlemi bu koleksiyonlarla çalışılarak gerçekleştirilir. Türetilmiş sınıflar tarafından TextElement kullanılan üç farklı koleksiyon vardır:

Satırlar, Bloklar ve ListItem'lerin ilgili özelliklerini kullanarak bu koleksiyonlardan öğeleri işleyebilirsiniz (öğe ekleyebilir veya kaldırabilirsiniz). Aşağıdaki örneklerde, Inlines özelliğini kullanarak Span'ın içeriğinin nasıl işleyecekleri gösterilmektedir .

Dekont

Tablo, içeriğini işlemek için çeşitli koleksiyonlar kullanır, ancak bunlar burada ele alınmaz. Daha fazla bilgi için bkz . Tabloya Genel Bakış.

Aşağıdaki örnek yeni Span bir nesne oluşturur ve ardından iki metin çalıştırmasını öğesinin AddSpaniçerik alt öğeleri olarak eklemek için yöntemini kullanır.

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..."))

Aşağıdaki örnek yeni Run bir öğe oluşturur ve öğesinin Spanbaşına ekler.

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)

Aşağıdaki örnek içindeki son Inline öğeyi Spansiler.

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

Aşağıdaki örnek, içindekilerin (Inline öğeler) tümünü öğesinden Spantemizler.

spanx.Inlines.Clear();
spanx.Inlines.Clear()

Bu içerik modelini paylaşan türler

Aşağıdaki türler sınıfından devralır TextElement ve bu genel bakışta açıklanan içeriği görüntülemek için kullanılabilir.

Bold, Figure, Floater, Hyperlink, InlineUIContainer, Italic, LineBreak, List, ListItem, Paragraph, Run, Section, Span, Table, Underline.

Bu listenin yalnızca Windows SDK ile dağıtılan kısıt dışı türleri içerdiğini unutmayın. öğesinden TextElementdevralan diğer türleri kullanabilirsiniz.

TextElement Nesneleri İçerebilen Türler

Bkz. WPF İçerik Modeli.

Ayrıca bkz.