Bagikan melalui


Gambaran Umum Model Konten TextElement

Gambaran umum con mode tenda l ini menjelaskan konten yang TextElementdidukung untuk . Kelas Paragraph adalah jenis TextElement. Con mode tenda l menjelaskan objek/elemen apa yang dapat terkandung dalam objek/elemen lain. Gambaran umum ini merangkum con mode tenda l yang digunakan untuk objek yang berasal dari TextElement. Untuk informasi selengkapnya, lihat Gambaran Umum Dokumen Alur.

Diagram Model Konten

Diagram berikut meringkas con mode tenda l untuk kelas yang berasal dari TextElement serta bagaimana non-kelas TextElement lain cocok dengan model ini.

Diagram: Flow content containment schema

Seperti yang dapat dilihat dari diagram sebelumnya, anak-anak yang diizinkan untuk elemen belum tentu ditentukan oleh apakah kelas berasal dari Block kelas atau Inline kelas. Misalnya, Span ( Inlinekelas turunan) hanya dapat memiliki Inline elemen anak, tetapi Figure (juga Inlinekelas turunan) hanya dapat memiliki Block elemen anak. Oleh karena itu, diagram berguna untuk menentukan dengan cepat elemen apa yang dapat dikandung di elemen lain. Sebagai contoh, mari kita gunakan diagram untuk menentukan cara membuat konten alur dari RichTextBox.

  1. Harus RichTextBox berisi FlowDocument yang pada gilirannya harus berisi Blockobjek -turunan. Berikut ini adalah segmen yang sesuai dari diagram sebelumnya.

    Diagram: RichTextBox containment rules

    Sejauh ini, inilah yang mungkin terlihat seperti markup.

    <RichTextBox>
      <FlowDocument>
        <!-- One or more Block-derived object… -->
      </FlowDocument>
    </RichTextBox>
    
  2. Menurut diagram, ada beberapa Block elemen yang dapat dipilih termasuk Paragraph, , Section, TableList, dan BlockUIContainer (lihat Kelas turunan blok dalam diagram sebelumnya). Katakanlah kita ingin .Table Menurut diagram sebelumnya, berisi TableTableRowGroup elemen yang mengandung TableRow , yang berisi TableCell elemen yang berisi Blockobjek -turunan. Berikut ini adalah segmen yang sesuai untuk Table diambil dari diagram sebelumnya.

    Diagram: Parent/child schema for Table

    Berikut ini adalah markup yang sesuai.

    <RichTextBox>
      <FlowDocument>
        <Table>
          <TableRowGroup>
            <TableRow>
              <TableCell>
                <!-- One or more Block-derived object… -->
              </TableCell>
            </TableRow>
          </TableRowGroup>
        </Table>
      </FlowDocument>
    </RichTextBox>
    
  3. Sekali lagi, satu atau beberapa Block elemen diperlukan di bawah TableCell. Untuk membuatnya sederhana, mari kita tempatkan beberapa teks di dalam sel. Kita dapat melakukan ini menggunakan Paragraph dengan Run elemen . Berikut ini adalah segmen yang sesuai dari diagram yang menunjukkan bahwa Paragraph dapat mengambil Inline elemen dan bahwa Run ( Inline elemen) hanya dapat mengambil teks biasa.

    Diagram: Parent/child schema for Paragraph

    Diagram: Parent/Child schema for Run

Berikut ini adalah seluruh contoh dalam markup.

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

Bekerja dengan Konten TextElement Secara Terprogram

Konten dari TextElement terdiri dari koleksi dan sehingga secara terprogram memanipulasi konten TextElement objek dilakukan dengan bekerja dengan koleksi ini. Ada tiga koleksi berbeda yang digunakan oleh TextElement kelas -turunan:

Anda dapat memanipulasi (menambahkan atau menghapus item) dari koleksi ini menggunakan properti Sebaris, Blokir, dan ListItem masing-masing. Contoh berikut menunjukkan cara memanipulasi konten Rentang menggunakan properti Sebaris .

Catatan

Tabel menggunakan beberapa koleksi untuk memanipulasi kontennya, tetapi tidak tercakup di sini. Untuk informasi selengkapnya, lihat Gambaran Umum Tabel.

Contoh berikut membuat objek baru Span , lalu menggunakan Add metode untuk menambahkan dua eksekusi teks sebagai turunan konten dari 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..."))

Contoh berikut membuat elemen baru Run dan menyisipkannya di awal 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)

Contoh berikut menghapus elemen terakhir Inline di Span.

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

Contoh berikut menghapus semua konten (Inline elemen) dari Span.

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

Tipe yang berbagi model isi ini

Jenis berikut mewarisi dari TextElement kelas dan dapat digunakan untuk menampilkan konten yang dijelaskan dalam gambaran umum ini.

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

Perhatikan bahwa daftar ini hanya menyertakan jenis nonabstrak yang didistribusikan dengan Windows SDK. Anda dapat menggunakan jenis lain yang mewarisi dari TextElement.

Tipe yang Bisa Berisi Objek TextElement

Lihat Model Konten WPF.

Baca juga