TextElement İçerik Modeline Genel Bakış

Bu içerik modeline genel bakış, için desteklenen içeriği açıklar TextElement . ParagraphSınıfı bir türüdür TextElement . Bir içerik modeli, hangi nesnelerin/öğelerin başkaları tarafından içerildiğini açıklar. Bu genel bakışta, öğesinden türetilmiş nesneler için kullanılan içerik modeli özetlenmektedir TextElement . daha fazla bilgi için bkz. Flow belgeye genel bakış.

İçerik modeli diyagramı

Aşağıdaki diyagramda, ' den türetilen sınıfların içerik modeli ve TextElement diğer TextElement sınıfların bu modele nasıl sığması özetlenmektedir.

diyagram: Flow içerik kapsama şeması

Önceki diyagramdan görünebileceği gibi, bir öğe için izin verilen alt öğeler, bir sınıfın Block sınıftan mı yoksa bir sınıftan mi türetilmediği tarafından belirlenmeyebilir Inline . Örneğin, bir Span (bir Inline türetilmiş sınıf) yalnızca alt öğelere sahip olabilir Inline , ancak bir Figure (Ayrıca, Inline -türetilmiş sınıf) yalnızca Block alt öğeleri olabilir. Bu nedenle, bir diyagram, başka bir öğenin hangi öğeye dahil edilebilir olduğunu hızlı bir şekilde belirlemek için faydalıdır. Örnek olarak, ' ın akış içeriğinin nasıl oluşturulacağını öğrenmek için diyagramı kullanalım RichTextBox .

  1. RichTextBox FlowDocument , ' In bir ile türetilmiş nesne içermesi gereken bir içermelidir Block . Yukarıdaki diyagramda karşılık gelen segment aşağıda verilmiştir.

    Diyagram: RichTextBox kapsama kuralları

    Bu nedenle, biçimlendirmenin şu şekilde görünebileceğini burada bulabilirsiniz.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Diyagrama göre,,,, Block ve dahil olmak üzere seçebileceğiniz birkaç öğe Paragraph vardır Section Table List BlockUIContainer (önceki diyagramda blok türetilmiş sınıflara bakın). Diyelim ki bir Table . Önceki diyagrama göre, bir içeren öğeleri içeren öğeleri içeren bir Table TableRowGroup TableRow öğesi içerir TableCell Block . Aşağıda, önceki diyagramdan alınan karşılık gelen segment verilmiştir Table .

    Diyagram: tablo için üst/alt şema

    Karşılık gelen biçimlendirme aşağıda verilmiştir.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Yine, bir veya daha fazla Block öğe bir altında gereklidir TableCell . Basit hale getirmek için hücrenin içine biraz metin yerleştirelim. Bunu bir öğesi ile kullanarak yapabiliriz Paragraph Run . Aşağıda, bir Paragraph Inline öğesinin bir öğe (bir öğe Run Inline ) yalnızca düz metin alabilir olduğunu gösteren diyagramda karşılık gelen segmentler verilmiştir.

    Diyagram: paragraf için üst/alt şema

    Diyagram: çalıştırma için üst/alt şema

Biçimlendirme içindeki tüm örnek aşağıda 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>

Programlı olarak TextElement Içeriğiyle çalışma

A 'nın içeriği TextElement koleksiyonlar tarafından yapılır ve böylece TextElement Bu koleksiyonlar ile çalışarak nesne içeriğini programlı olarak işleme yapılır. Türetilmiş sınıflar tarafından kullanılan üç farklı koleksiyon vardır TextElement :

Inlines, Blocks ve ListItems öğelerinin ilgili özelliklerini kullanarak bu koleksiyonlardan öğe işleyebilir (öğeleri ekleyebilir veya kaldırabilirsiniz). Aşağıdaki örneklerde, Inlines özelliğini kullanarak bir yayılma içeriğinin nasıl kullanılacağı gösterilmektedir.

Not

Tablo, içeriğini işlemek için çeşitli koleksiyonlar kullanır, ancak burada kapsanmaz. Daha fazla bilgi için bkz. tabloya genel bakış.

Aşağıdaki örnek, yeni bir Span nesne oluşturur ve sonra ' Add nin içerik alt öğesi olarak iki metin çalıştırması eklemek için yöntemini kullanır 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..."))

Aşağıdaki örnek yeni bir öğesi oluşturur Run ve öğesinin başlangıcına ekler 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)

Aşağıdaki örnek Inline , içindeki son öğeyi siler Span .

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

Aşağıdaki örnek, içindeki tüm içeriği ( Inline öğeleri) temizler Span .

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

Bu Içerik modelini paylaşan türler

Aşağıdaki türler TextElement sınıftan devralınır ve bu genel bakışta açıklanan içeriği göstermek 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 soyut olmayan türler içerdiğini unutmayın. Öğesinden devraldığı diğer türleri kullanabilirsiniz TextElement .

TextElement nesneleri Içerebilen türler

Bkz. WPF Içerik modeli.

Ayrıca bkz.