Aracılığıyla paylaş


Akış Belgesi Genel Bakış

Akış belgeleri görüntüleme ve okunabilirlik en iyi şekilde tasarlanmıştır. Rather than being set to one predefined layout, flow documents dynamically adjust and reflow their content based on run-time variables such as window size, device resolution, and optional user preferences. Buna ek olarak, akış belgeleri sayfalandırma ve sütunlar gibi gelişmiş belge özellikleri sunar. Bu konuda akışı belgeleri ve bunların genel bir bakış sağlar.

Bu konu aşağıdaki bölümleri içerir.

  • Akış belgesi nedir
  • Akış belge türleri
  • Akış içeriği oluşturma
  • İlgili sınıflarının akış
  • İçerik şema
  • Metni özelleştirme
  • İlgili Konular

Akış belgesi nedir

Akış belge "yeniden akış içeriği" için tasarlanmıştır pencere boyutu, aygıt çözünürlüğü ve diğer ortam değişkenleri bağlı. In addition, flow documents have a number of built in features including search, viewing modes that optimize readability, and the ability to change the size and appearance of fonts. Akışı belgeleri okuma Kolaylığı birincil belge tüketim senaryo olduğunda en iyi şekilde kullanılır. Buna karşılık, sabit belgeler statik bir sunu için tasarlanmıştır. Sabit belgeleri kaynak içeriğin kalitesini gerekli olduğunda yararlıdır. Bakın WPF'deki Belgeler farklı türden hakkında daha fazla bilgi içinbelgeleri.

Aşağıda çeşitli farklı boyutlarda pencerelerde görüntülenen örnek akışı belge gösterilmiştir. Göstergesindeki değiştikçe iyi kullanmasına kullanılabilir alan için içerik akıtılır.

Değişken Belge İçeriğinin Yeniden Akışı

Yukarıdaki resimde görüldüğü gibi akış bileşenlerinin çoğunun paragraflar, listeler, görüntüleri ve daha birçok içerik kullanabilirsiniz. Bu bileşenler biçimlendirme öğeleri ve yordam koddaki nesneleri karşılık gelir. Biz bu sınıflar ayrıntılı üzerinden de daha sonra gidecek Akış ilgili sınıfları bölümü genel bir bakış. Şimdilik, bir paragrafın kalın metin ve bir liste ile oluşan akışı belgeyi oluşturan bir basit kod örneği İşte.

<!-- This simple flow document includes a paragraph with some
     bold text in it and a list. -->
<FlowDocumentReader xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <FlowDocument>
    <Paragraph>
      <Bold>Some bold text in the paragraph.</Bold>
      Some text that is not bold.
    </Paragraph>

    <List>
      <ListItem>
        <Paragraph>ListItem 1</Paragraph>
      </ListItem>
      <ListItem>
        <Paragraph>ListItem 2</Paragraph>
      </ListItem>
      <ListItem>
        <Paragraph>ListItem 3</Paragraph>
      </ListItem>
    </List>

  </FlowDocument>
</FlowDocumentReader>

Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents

Namespace SDKSample
    Partial Public Class SimpleFlowExample
        Inherits Page
        Public Sub New()

            Dim myParagraph As New Paragraph()

            ' Add some Bold text to the paragraph
            myParagraph.Inlines.Add(New Bold(New Run("Some bold text in the paragraph.")))

            ' Add some plain text to the paragraph
            myParagraph.Inlines.Add(New Run(" Some text that is not bold."))

            ' Create a List and populate with three list items.
            Dim myList As New List()

            ' First create paragraphs to go into the list item.
            Dim paragraphListItem1 As New Paragraph(New Run("ListItem 1"))
            Dim paragraphListItem2 As New Paragraph(New Run("ListItem 2"))
            Dim paragraphListItem3 As New Paragraph(New Run("ListItem 3"))

            ' Add ListItems with paragraphs in them.
            myList.ListItems.Add(New ListItem(paragraphListItem1))
            myList.ListItems.Add(New ListItem(paragraphListItem2))
            myList.ListItems.Add(New ListItem(paragraphListItem3))

            ' Create a FlowDocument with the paragraph and list.
            Dim myFlowDocument As New FlowDocument()
            myFlowDocument.Blocks.Add(myParagraph)
            myFlowDocument.Blocks.Add(myList)

            ' Add the FlowDocument to a FlowDocumentReader Control
            Dim myFlowDocumentReader As New FlowDocumentReader()
            myFlowDocumentReader.Document = myFlowDocument

            Me.Content = myFlowDocumentReader
        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class SimpleFlowExample : Page
    {
        public SimpleFlowExample()
        {

            Paragraph myParagraph = new Paragraph();

            // Add some Bold text to the paragraph
            myParagraph.Inlines.Add(new Bold(new Run("Some bold text in the paragraph.")));

            // Add some plain text to the paragraph
            myParagraph.Inlines.Add(new Run(" Some text that is not bold."));

            // Create a List and populate with three list items.
            List myList = new List();

            // First create paragraphs to go into the list item.
            Paragraph paragraphListItem1 = new Paragraph(new Run("ListItem 1"));
            Paragraph paragraphListItem2 = new Paragraph(new Run("ListItem 2"));
            Paragraph paragraphListItem3 = new Paragraph(new Run("ListItem 3"));

            // Add ListItems with paragraphs in them.
            myList.ListItems.Add(new ListItem(paragraphListItem1));
            myList.ListItems.Add(new ListItem(paragraphListItem2));
            myList.ListItems.Add(new ListItem(paragraphListItem3));

            // Create a FlowDocument with the paragraph and list.
            FlowDocument myFlowDocument = new FlowDocument();
            myFlowDocument.Blocks.Add(myParagraph);
            myFlowDocument.Blocks.Add(myList);

            // Add the FlowDocument to a FlowDocumentReader Control
            FlowDocumentReader myFlowDocumentReader = new FlowDocumentReader();
            myFlowDocumentReader.Document = myFlowDocument;

            this.Content = myFlowDocumentReader;
        }
    }
}

Aşağıdaki resimde, bu kod parçacığını nasıl göründüğünü gösterir.

Ekran Görüntüsü: İşlenmiş FlowDocument örnek

Bu örnekte, FlowDocumentReader Denetim kullanılan ana akış içeriği. Bakın Akışı belge türleri denetimleri barındıran akış içeriği hakkında daha fazla bilgi için. Paragraph, List, ListItem, ve Bold öğeleri kullanılır içerik biçimlendirmeyi denetlemek için temel alan kendi sıralarında işaretleme. Örneğin, Bold öğesi yayılan; paragraftaki metnin yalnızca bir bölümünü üzerinden Sonuç olarak, yalnızca o metni kalın parçasıdır. html kullandıysanız, bu size tanıdık olacaktır.

Yukarıdaki örnekte olarak vurgulanan, akış belgelere yerleşik birkaç özellik vardır:

  • Search: Tüm belgenin tam metin araması gerçekleştirmek kullanıcı sağlar.

  • Görüntüleme modu: Kullanıcı, tek sayfa (sayfa-at-a-time) görüntüleme modu, bir iki sayfa-a-modu ve sürekli kaydırma (bottomless) görüntüleme modunu görüntüleme defada (kitap okuma biçimi) dahil olmak üzere, tercih edilen görüntüleme modunu seçebilirsiniz. For more information about these viewing modes, see FlowDocumentReaderViewingMode.

  • Sayfa gezinti denetimleri: Sayfalar belge görüntüleme modunu kullanıyorsa, sayfa gezinti denetimlerini sonraki sayfa (aşağı ok) veya önceki sayfaya (yukarı ok) olduğu gibi göstergeler geçerli sayfa numarası ve toplam sayfa sayısı için atlamak için bir düğme bulunur. Sayfalar arasında çevirme klavye ok tuşlarını kullanarak da gerçekleştirilebilir.

  • Yakınlaştırma: Yakınlaştırma denetimleri artırmak veya artı veya eksi düğmelerini, yakınlaştırma düzeyini azaltmak sırasıyla sağlamak. Yakınlaştırma denetimleri de yakınlaştırma düzeyini ayarlamak için bir kaydırıcı içerir. For more information, see Zoom.

Bu özellikler, akış içeriğini barındırmak için kullanılan denetim dayalı değiştirilebilir. Sonraki bölümde farklı denetimler açıklanmıştır.

Akış belge türleri

Görüntü akışı belge içeriğini ve nasıl göründüğü, hangi nesne akış içeriği barındırmak için kullanılan üzerine bağlıdır. Akış içeriği görüntülemeyi destekleyen dört denetimi vardır: FlowDocumentReader, FlowDocumentPageViewer, RichTextBox, and FlowDocumentScrollViewer. Bu denetimler, aşağıda kısaca açıklanmıştır.

Not: FlowDocument Tüm bu denetimleri görüntüleme tüketen doğrudan ana akış içeriği için gerekli olduğundan, bir FlowDocument Akış içerik barındırmayı etkinleştirmek için.

FlowDocumentReader

FlowDocumentReader includes features that enable the user to dynamically choose between various viewing modes, including a single-page (page-at-a-time) viewing mode, a two-page-at-a-time (book reading format) viewing mode, and a continuous scrolling (bottomless) viewing mode. For more information about these viewing modes, see FlowDocumentReaderViewingMode. If you do not need the ability to dynamically switch between different viewing modes, FlowDocumentPageViewer and FlowDocumentScrollViewer provide lighter-weight flow content viewers that are fixed in a particular viewing mode.

FlowDocumentPageViewer and FlowDocumentScrollViewer

FlowDocumentPageViewer shows content in page-at-a-time viewing mode, while FlowDocumentScrollViewer shows content in continuous scrolling mode. Both FlowDocumentPageViewer and FlowDocumentScrollViewer are fixed to a particular viewing mode. Compare to FlowDocumentReader, which includes features that enable the user to dynamically choose between various viewing modes (as provided by the FlowDocumentReaderViewingMode enumeration), at the cost of being more resource intensive than FlowDocumentPageViewer or FlowDocumentScrollViewer.

By default, a vertical scrollbar is always shown, and a horizontal scrollbar becomes visible if needed. Varsayılan kullanıcı Arabirimi için FlowDocumentScrollViewer bir araç; içermez Ancak, IsToolBarVisible özelliği kullanılabilir etkinleştirme yerleşik bir araç çubuğu.

RichTextBox

Kullandığınız bir RichTextBox , istediğiniz izin kullanıcı düzenlemek akış içeriği. Örneğin, işlemek için izin verilen bir düzenleyici oluşturmak istediyseniz şey istediğiniz tablolar, italik ve kalın biçimlendirme, vb., kullanacağınız bir RichTextBox. See RichTextBox Genel Bakış for more information.

Note: Akış içeriği içinde bir RichTextBox değil davranan tıpkı akış içeriği bulunan diğer denetimleri. For example, there are no columns in a RichTextBox and hence no automatic resizing behavior. Ayrıca, genellikle yerleşik özellikleri arama, mod, sayfa gezinti ve yakınlaştırma gibi içerik akışı içinde kullanılamaz bir RichTextBox.

Akış içeriği oluşturma

Karmaşık, metin, resimler, tablolar da dahil olmak üzere çeşitli öğelerden oluşan ve hatta akış içeriği olabilir UIElement türetilmiş sınıfları gibi kontrol eder. Karmaşık akış içeriği oluşturmak nasıl anlamak için aşağıdaki hususları önemlidir:

  • Akış ilgili sınıfları: Akışı içeriğinde kullanılan her sınıfın belirli bir amacı vardır. Buna ek olarak, akış sınıfları arasında bir hiyerarşik ilişki nasıl kullanıldıklarını anlamanıza yardımcı olur. Örneğin, dan türetilmiş sınıfları Block ondan türetilmiş sınıfları sırasında diğer nesneleri içeren için kullanılan sınıf Inline görüntülenen nesneleri içeren.

  • İçerik şema: Akış belgeye önemli miktarda iç içe geçmiş öğeler gerekebilir. İçerik şema olası üst/alt öğeleri arasındaki ilişkileri belirler.

Aşağıdaki bölümlerde daha ayrıntılı bu alanların her biri üzerine gider.

İlgili sınıflarının akış

Aşağıdaki diyagramda akışının içeriğiyle en tipik olarak kullanılan nesneleri gösterir:

Diyagram: Akış içerik öğesi sınıf hiyerarşisi

Akış içeriği amacıyla, iki önemli kategorisi vardır:

  1. Blok türetilmiş: "İçerik öğelerini engelle" olarak da bilinir ya da sadece "blok öğeleri". Devralmıyor öğeleri Block kullanılabilir öğeler altında ortak bir üst Grup veya uygulama genel özniteliklerini grup.

  2. Satır içi türetilmiş: "Satır içi içerik öğelerini" olarak da bilinir ya da sadece "satıriçi öğeler". Devralmıyor öğeleri Inline ya da içerdiği bir blok öğesi veya başka bir satıriçi öğe. Satır içi öğeler genellikle ekranda oluşturulmadan içeriğinin doğrudan kapsayıcı olarak kullanılır. Örneğin, bir Paragraph (blok öğe) içerebilir bir Run (satır içi öğe) ama Run aslında, ekran. işlenen metin içeriyor

Bu iki kategoriye her sınıfta aşağıda kısaca açıklanmıştır.

Blok türetilmiş sınıflar

Paragraf

Paragraphgenellikle bir paragrafa içeriği gruplandırmak için kullanılır. En basit ve en yaygın paragraf paragraf metin oluşturmak için kullanılır.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <Paragraph>
    Some paragraph text.
  </Paragraph>
</FlowDocument>

Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents

Namespace SDKSample
    Partial Public Class ParagraphExample
        Inherits Page
        Public Sub New()

            ' Create paragraph with some text.
            Dim myParagraph As New Paragraph()
            myParagraph.Inlines.Add(New Run("Some paragraph text."))

            ' Create a FlowDocument and add the paragraph to it.
            Dim myFlowDocument As New FlowDocument()
            myFlowDocument.Blocks.Add(myParagraph)

            Me.Content = myFlowDocument
        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class ParagraphExample : Page
    {
        public ParagraphExample()
        {

            // Create paragraph with some text.
            Paragraph myParagraph = new Paragraph();
            myParagraph.Inlines.Add(new Run("Some paragraph text."));

            // Create a FlowDocument and add the paragraph to it.
            FlowDocument myFlowDocument = new FlowDocument();
            myFlowDocument.Blocks.Add(myParagraph);

            this.Content = myFlowDocument;
        }
    }
}

Ancak, aşağıda göreceğiniz gibi diğer satır içi türetilmiş öğeler de içerebilir.

Section

Sectionyalnızca diğer içermek için kullanılan Block-türetilmiş öğelerini. Herhangi bir varsayılan içerdiği öğeleri biçimlendirme uygulanmaz. Ancak, üzerinde herhangi bir özellik kümesi değerleri bir Section uygulandığı, alt öğeleri. Bir bölümü program aracılığıyla kendi alt toplulukta yineleme sağlar. Sectionbenzer bir şekilde <DIV> için kullanılır html etiketi.

Aşağıdaki örnekte, üç paragraf altında tanımlanan Section. Bölüm var bir Background özellik değeri kırmızı, bu nedenle paragrafların arka plan rengi olan da red.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <!-- By default, Section applies no formatting to elements contained
       within it. However, in this example, the section has a Background
       property value of "Red", therefore, the three paragraphs (the block)  
       inside the section also have a red background. -->
  <Section Background="Red">
    <Paragraph>
      Paragraph 1
    </Paragraph>
    <Paragraph>
      Paragraph 2
    </Paragraph>
    <Paragraph>
      Paragraph 3
    </Paragraph>
  </Section>
</FlowDocument>

Imports System
Imports System.Windows
Imports System.Windows.Media
Imports System.Windows.Controls
Imports System.Windows.Documents

Namespace SDKSample
    Partial Public Class SectionExample
        Inherits Page
        Public Sub New()

            ' Create three paragraphs
            Dim myParagraph1 As New Paragraph(New Run("Paragraph 1"))
            Dim myParagraph2 As New Paragraph(New Run("Paragraph 2"))
            Dim myParagraph3 As New Paragraph(New Run("Paragraph 3"))

            ' Create a Section and add the three paragraphs to it.
            Dim mySection As New Section()
            mySection.Background = Brushes.Red

            mySection.Blocks.Add(myParagraph1)
            mySection.Blocks.Add(myParagraph2)
            mySection.Blocks.Add(myParagraph3)

            ' Create a FlowDocument and add the section to it.
            Dim myFlowDocument As New FlowDocument()
            myFlowDocument.Blocks.Add(mySection)

            Me.Content = myFlowDocument
        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class SectionExample : Page
    {
        public SectionExample()
        {

            // Create three paragraphs
            Paragraph myParagraph1 = new Paragraph(new Run("Paragraph 1"));
            Paragraph myParagraph2 = new Paragraph(new Run("Paragraph 2"));
            Paragraph myParagraph3 = new Paragraph(new Run("Paragraph 3"));

            // Create a Section and add the three paragraphs to it.
            Section mySection = new Section();
            mySection.Background = Brushes.Red;

            mySection.Blocks.Add(myParagraph1);
            mySection.Blocks.Add(myParagraph2);
            mySection.Blocks.Add(myParagraph3);

            // Create a FlowDocument and add the section to it.
            FlowDocument myFlowDocument = new FlowDocument();
            myFlowDocument.Blocks.Add(mySection);

            this.Content = myFlowDocument;
        }
    }
}

BlockUIContainer

BlockUIContainersağlayan UIElement öğeleri (yani bir Button) blok türetilen akış içeriği. katıştırılmış InlineUIContainer(aşağıya bakın) gömmek için kullanılan UIElement öğelerindeki satır içi türetilen akış içeriği. BlockUIContainerve InlineUIContainer kullanmak için başka hiçbir yolu olmadığı için önemli olan bir UIElement , içindeki içerdiği sürece içerik akışıiki bu öğeleri.

Aşağıdaki örnek, nasıl kullanılacağını gösterir BlockUIContainer ana için öðe UIElement nesneleri içindeki akış içeriği.

<FlowDocument ColumnWidth="400">
  <Section Background="GhostWhite">
    <Paragraph>
      A UIElement element may be embedded directly in flow content
      by enclosing it in a BlockUIContainer element.
    </Paragraph>
    <BlockUIContainer>
      <Button>Click me!</Button>
    </BlockUIContainer>
    <Paragraph>
      The BlockUIContainer element may host no more than one top-level
      UIElement.  However, other UIElements may be nested within the
      UIElement contained by an BlockUIContainer element.  For example,
      a StackPanel can be used to host multiple UIElement elements within
      a BlockUIContainer element.
    </Paragraph>
    <BlockUIContainer>
      <StackPanel>
        <Label Foreground="Blue">Choose a value:</Label>
        <ComboBox>
          <ComboBoxItem IsSelected="True">a</ComboBoxItem>
          <ComboBoxItem>b</ComboBoxItem>
          <ComboBoxItem>c</ComboBoxItem>
        </ComboBox>
        <Label Foreground ="Red">Choose a value:</Label>
        <StackPanel>
          <RadioButton>x</RadioButton>
          <RadioButton>y</RadioButton>
          <RadioButton>z</RadioButton>
        </StackPanel>
        <Label>Enter a value:</Label>
        <TextBox>
          A text editor embedded in flow content.
        </TextBox>
      </StackPanel>
    </BlockUIContainer>
  </Section>
</FlowDocument>

The following figure shows how this example renders.

Ekran Görüntüsü: Akış içerikUIElement gömülü

List

Listsayısal veya madde işaretli liste oluşturmak için kullanılır. Set MarkerStyle özelliği için bir TextMarkerStyle numaralandırma değeri belirleme stil listesi. Aşağıdaki örnek, basit bir liste oluşturulması gösterilmiştir.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <List>
    <ListItem>
      <Paragraph>
        List Item 1
      </Paragraph>
    </ListItem>
    <ListItem>
      <Paragraph>
        List Item 2
      </Paragraph>
    </ListItem>
    <ListItem>
      <Paragraph>
        List Item 3
      </Paragraph>
    </ListItem>
  </List>
</FlowDocument>

Imports System
Imports System.Windows
Imports System.Windows.Media
Imports System.Windows.Controls
Imports System.Windows.Documents

Namespace SDKSample
    Partial Public Class ListExample
        Inherits Page
        Public Sub New()

            ' Create three paragraphs
            Dim myParagraph1 As New Paragraph(New Run("List Item 1"))
            Dim myParagraph2 As New Paragraph(New Run("List Item 2"))
            Dim myParagraph3 As New Paragraph(New Run("List Item 3"))

            ' Create the ListItem elements for the List and add the 
            ' paragraphs to them.
            Dim myListItem1 As New ListItem()
            myListItem1.Blocks.Add(myParagraph1)
            Dim myListItem2 As New ListItem()
            myListItem2.Blocks.Add(myParagraph2)
            Dim myListItem3 As New ListItem()
            myListItem3.Blocks.Add(myParagraph3)

            ' Create a List and add the three ListItems to it.
            Dim myList As New List()

            myList.ListItems.Add(myListItem1)
            myList.ListItems.Add(myListItem2)
            myList.ListItems.Add(myListItem3)

            ' Create a FlowDocument and add the section to it.
            Dim myFlowDocument As New FlowDocument()
            myFlowDocument.Blocks.Add(myList)

            Me.Content = myFlowDocument
        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class ListExample : Page
    {
        public ListExample()
        {

            // Create three paragraphs
            Paragraph myParagraph1 = new Paragraph(new Run("List Item 1"));
            Paragraph myParagraph2 = new Paragraph(new Run("List Item 2"));
            Paragraph myParagraph3 = new Paragraph(new Run("List Item 3"));

            // Create the ListItem elements for the List and add the 
            // paragraphs to them.
            ListItem myListItem1 = new ListItem();
            myListItem1.Blocks.Add(myParagraph1);
            ListItem myListItem2 = new ListItem();
            myListItem2.Blocks.Add(myParagraph2);
            ListItem myListItem3 = new ListItem();
            myListItem3.Blocks.Add(myParagraph3);

            // Create a List and add the three ListItems to it.
            List myList = new List();

            myList.ListItems.Add(myListItem1);
            myList.ListItems.Add(myListItem2);
            myList.ListItems.Add(myListItem3);

            // Create a FlowDocument and add the section to it.
            FlowDocument myFlowDocument = new FlowDocument();
            myFlowDocument.Blocks.Add(myList);

            this.Content = myFlowDocument;
        }
    }
}

Not: List kullanan tek akış öğedir ListItemCollection yönetmek için alt öğeleri.

Table

Tablebir tablo oluşturmak için kullanılır. Tablebenzer şekilde, Grid öğesi ancak daha fazla özellikleri vardır ve, bu nedenle, büyük kaynak genel gider. Çünkü Grid olan bir UIElement, bunun içerdiği sürece, akış içeriği kullanılamaz bir BlockUIContainer veya InlineUIContainer. For more information on Table, see Tablo Genel Bakışı.

Satır içi türetilmiş sınıflar

Run

Runbiçimlendirilmemiş metin içermek için kullanılır. Tahmin edebileceiniz Run nesnelere kullanılabilir uygulamasında kapsamlı olarak akış içeriği. Ancak, biçimlendirme içinde Run öğeleri açıkça kullanılması gerekli değildir. Runoluştururken veya kod kullanarak akış belgeleri işlemek için gereklidir. Örneğin, biçimlendirme altında ilk olarak Paragraph belirtir Run öğesi açıkça ikinci sırada vermiyor değil. Paragrafların ikisi de aynı çıktıyı oluşturur.

<Paragraph>
  <Run>Paragraph that explicitly uses the Run element.</Run>
</Paragraph>

<Paragraph>
  This Paragraph omits the the Run element in markup. It renders
  the same as a Paragraph with Run used explicitly. 
</Paragraph>

Not: başlayarak .NET Framework 4, Text özelliği Run nesnesi olan bir bağımlılık özelliği. Size bağlayabilirsiniz Text özelliği bir veri kaynağı, gibi bir TextBlock. Text Özelliği tam olarak destekleyen tek yönlü bağlama. Text Özelliğini de destekler iki yönlü bağlama dışında RichTextBox. For an example, see Run.Text.

Span

Spandiğer satır içi içerik öğeleri gruplandıran. İçerdiği hiçbir işleme içerik içinde uygulandığı bir Span öğesi. Ancak, öğeleri, miras alınan Span gibi Hyperlink, Bold, Italic ve Underline uygulanan biçimlendirmeyi metin.

Aşağıda örnek olarak verilebilir bir Span metin, satır içi içeriği için kullanılan bir Bold öğesi ve bir Button.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <Paragraph>
    Text before the Span. <Span Background="Red">Text within the Span is
    red and <Bold>this text is inside the Span-derived element Bold.</Bold>
    A Span can contain more then text, it can contain any inline content. For
    example, it can contain a 
    <InlineUIContainer>
      <Button>Button</Button>
    </InlineUIContainer>
    or other UIElement, a Floater, a Figure, etc.</Span>
  </Paragraph>

</FlowDocument>

Aşağıdaki ekran görüntüsü nasıl Bu örnek işler gösterilir.

Ekran Görüntüsü: İşlenmiş yayılma örneği

InlineUIContainer

InlineUIContainersağlayan UIElement öğeleri (yani bir denetim ister Button) katıştırılmış bir Inline içerik öğesi. Bu öğe için eşdeğer satır içi ise BlockUIContainer Yukarıda açıklanan. Aşağıda kullanan bir örnektir InlineUIContainer eklemek için bir Button , satır içi bir Paragraph.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <Paragraph>
    Text to precede the button...

    <!-- Set the BaselineAlignment property to "Bottom" 
         so that the Button aligns properly with the text. -->
    <InlineUIContainer BaselineAlignment="Bottom">
      <Button>Button</Button>
    </InlineUIContainer>
    Text to follow the button...
  </Paragraph>

</FlowDocument>

Imports System
Imports System.Windows
Imports System.Windows.Media
Imports System.Windows.Controls
Imports System.Windows.Documents

Namespace SDKSample
    Partial Public Class InlineUIContainerExample
        Inherits Page
        Public Sub New()
            Dim run1 As New Run(" Text to precede the button... ")
            Dim run2 As New Run(" Text to follow the button... ")

            ' Create a new button to be hosted in the paragraph.
            Dim myButton As New Button()
            myButton.Content = "Click me!"

            ' Create a new InlineUIContainer to contain the Button.
            Dim myInlineUIContainer As New InlineUIContainer()

            ' Set the BaselineAlignment property to "Bottom" so that the 
            ' Button aligns properly with the text.
            myInlineUIContainer.BaselineAlignment = BaselineAlignment.Bottom

            ' Asign the button as the UI container's child.
            myInlineUIContainer.Child = myButton

            ' Create the paragraph and add content to it.
            Dim myParagraph As New Paragraph()
            myParagraph.Inlines.Add(run1)
            myParagraph.Inlines.Add(myInlineUIContainer)
            myParagraph.Inlines.Add(run2)

            ' Create a FlowDocument and add the paragraph to it.
            Dim myFlowDocument As New FlowDocument()
            myFlowDocument.Blocks.Add(myParagraph)

            Me.Content = myFlowDocument
        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class InlineUIContainerExample : Page
    {
        public InlineUIContainerExample()
        {
            Run run1 = new Run(" Text to precede the button... ");
            Run run2 = new Run(" Text to follow the button... ");

            // Create a new button to be hosted in the paragraph.
            Button myButton = new Button();
            myButton.Content = "Click me!";

            // Create a new InlineUIContainer to contain the Button.
            InlineUIContainer myInlineUIContainer = new InlineUIContainer();

            // Set the BaselineAlignment property to "Bottom" so that the 
            // Button aligns properly with the text.
            myInlineUIContainer.BaselineAlignment = BaselineAlignment.Bottom;

            // Asign the button as the UI container's child.
            myInlineUIContainer.Child = myButton;

            // Create the paragraph and add content to it.
            Paragraph myParagraph = new Paragraph();
            myParagraph.Inlines.Add(run1);
            myParagraph.Inlines.Add(myInlineUIContainer);
            myParagraph.Inlines.Add(run2);

            // Create a FlowDocument and add the paragraph to it.
            FlowDocument myFlowDocument = new FlowDocument();
            myFlowDocument.Blocks.Add(myParagraph);

            this.Content = myFlowDocument;
        }
    }
}

Note: InlineUIContainerİşaretlemede açıkça kullanılmasına gerek yoktur. Bunu atlarsanız, bir InlineUIContainer yine de kod derlendiğinde oluşturulur.

Şekil ve Floater

Figureve Floater içerik akışını belgelerde, özelleştirilmiş bağımsız olarak yerleştirme özelliklere sahip gömmek için kullanılırbirincil içerik akışı. Figureveya Floater öğeleri sık kullanılır vurgulamak veya resimleri veya diğer içeriği ana içerik akışı içinde destekleyen ana içerik bölümlerini vurgulamak veya gibi gevşek ilgili içerik eklemereklam.

Aşağıdaki örnek katıştırma gösterir bir Figure içine bir paragraf metni.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <Paragraph>
    <Figure 
      Width="300" Height="100" 
      Background="GhostWhite" HorizontalAnchor="PageLeft" >
      <Paragraph FontStyle="Italic" Background="Beige" Foreground="DarkGreen" >
        A Figure embeds content into flow content with placement properties 
        that can be customized independently from the primary content flow
      </Paragraph>
    </Figure>
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
    nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi
    enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis
    nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
  </Paragraph>

</FlowDocument>

Imports System
Imports System.Windows
Imports System.Windows.Media
Imports System.Windows.Controls
Imports System.Windows.Documents

Namespace SDKSample
    Partial Public Class FigureExample
        Inherits Page
        Public Sub New()

            ' Create strings to use as content.
            Dim strFigure As String = "A Figure embeds content into flow content with" & " placement properties that can be customized" & " independently from the primary content flow"
            Dim strOther As String = "Lorem ipsum dolor sit amet, consectetuer adipiscing" & " elit, sed diam nonummy nibh euismod tincidunt ut laoreet" & " dolore magna aliquam erat volutpat. Ut wisi enim ad" & " minim veniam, quis nostrud exerci tation ullamcorper" & " suscipit lobortis nisl ut aliquip ex ea commodo consequat." & " Duis autem vel eum iriure."

            ' Create a Figure and assign content and layout properties to it.
            Dim myFigure As New Figure()
            myFigure.Width = New FigureLength(300)
            myFigure.Height = New FigureLength(100)
            myFigure.Background = Brushes.GhostWhite
            myFigure.HorizontalAnchor = FigureHorizontalAnchor.PageLeft
            Dim myFigureParagraph As New Paragraph(New Run(strFigure))
            myFigureParagraph.FontStyle = FontStyles.Italic
            myFigureParagraph.Background = Brushes.Beige
            myFigureParagraph.Foreground = Brushes.DarkGreen
            myFigure.Blocks.Add(myFigureParagraph)

            ' Create the paragraph and add content to it.
            Dim myParagraph As New Paragraph()
            myParagraph.Inlines.Add(myFigure)
            myParagraph.Inlines.Add(New Run(strOther))

            ' Create a FlowDocument and add the paragraph to it.
            Dim myFlowDocument As New FlowDocument()
            myFlowDocument.Blocks.Add(myParagraph)

            Me.Content = myFlowDocument
        End Sub
    End Class
End Namespace
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class FigureExample : Page
    {
        public FigureExample()
        {

            // Create strings to use as content.
            string strFigure = "A Figure embeds content into flow content with" +
                               " placement properties that can be customized" +
                               " independently from the primary content flow"; 
            string strOther = "Lorem ipsum dolor sit amet, consectetuer adipiscing" +
                              " elit, sed diam nonummy nibh euismod tincidunt ut laoreet" +
                              " dolore magna aliquam erat volutpat. Ut wisi enim ad" +
                              " minim veniam, quis nostrud exerci tation ullamcorper" +
                              " suscipit lobortis nisl ut aliquip ex ea commodo consequat." +
                              " Duis autem vel eum iriure.";

            // Create a Figure and assign content and layout properties to it.
            Figure myFigure = new Figure();
            myFigure.Width = new FigureLength(300);
            myFigure.Height = new FigureLength(100);
            myFigure.Background = Brushes.GhostWhite;
            myFigure.HorizontalAnchor = FigureHorizontalAnchor.PageLeft;
            Paragraph myFigureParagraph = new Paragraph(new Run(strFigure));
            myFigureParagraph.FontStyle = FontStyles.Italic;
            myFigureParagraph.Background = Brushes.Beige;
            myFigureParagraph.Foreground = Brushes.DarkGreen;
            myFigure.Blocks.Add(myFigureParagraph);

            // Create the paragraph and add content to it.
            Paragraph myParagraph = new Paragraph();
            myParagraph.Inlines.Add(myFigure);
            myParagraph.Inlines.Add(new Run(strOther));

            // Create a FlowDocument and add the paragraph to it.
            FlowDocument myFlowDocument = new FlowDocument();
            myFlowDocument.Blocks.Add(myParagraph);

            this.Content = myFlowDocument;
        }
    }
}

Bu örnek nasıl işler aşağıda gösterilmiştir.

Ekran Görüntüsü: Şekil örnek

Figureve Floater çeşitli şekillerde farklıdır ve farklı senaryolar için kullanılır

Şekil:

  • Konumlandırılmış olabilir: Sayfası, içerik, sütun veya paragrafın göreli olarak sabitlemek için yatay ve dikey bağlayıcılarını ayarlayabilirsiniz. Ayrıca, HorizontalOffset ve VerticalOffset özelliklerini belirleme rasgele uzaklıklar.

  • Birden fazla sütuna boyutlandırılabilir şöyledir: Ayarlayabileceğiniz Figure Yükseklik ve genişlik katlarında sayfası, içerik veya sütun yüksekliği veya genişliği. Sayfa ve içerik olması durumunda, 1'den büyük katları izin verilmeyeceğini unutmayın. Örneğin, genişliğini ayarlayabilirsiniz bir Figure "0,5 sayfa" olacak ya da "0,25 içeriği" ya da "2 sütun". Mutlak piksel değerleri de yüksekliğini ve genişliğini ayarlayabilirsiniz.

  • İlerlemek değil: İçeriğin içinde bir Figure içine sığmıyor Figure, render ne olursa olsun İçeriği sığdırmak ve kalan içerik kayboluyor

Floater:

  • Konumlandırılmış edemez ve alanı için kullanılabilir her yerde işlerler. Uzaklık veya bağlantı ayarlanamıyor bir Floater.

  • Birden fazla sütun boyutta yapamazsınız: Varsayılan olarak, Floater boyutlarda bir sütun. Bunu bir Width özelliği, bir mutlak piksel değerine ayarlanabilir ancak ise bu değer bir sütun genişliği gözardı edildi ve floater'den büyük bir sütunun boyutta Onu az bir sütun doğru piksel genişliğini ayarlayarak boyutlandırabilirsiniz ancak boyutlandırma sütun bağlı değildir Bu nedenle "0.5Column" Geçerli bir ifade için değil Floater genişliği. Floaterhiçbir height özelliğine sahiptir ve bu yüksekliği ayarlanamaz, onun yükseklik içeriğine bağlıdır

  • Floaterpaginates: Adresinde belirtilen genişliğini içeriği birden fazla sütunu yüksekliğine uzanıyorsa, floater keser ve sonraki sütunu, bir sonraki sayfada, vb. paginates.

Figureboyutunu denetlemek istediğiniz tek başına içerik koymak için iyi bir yerdir ve konumlandırma ve içeriği belirtilen sığacak şekilde eklememenizi. Floaterana sayfa içeriği benzer akar, ancak buradan ayrılır daha fazla serbest akışlı içerik koymak için iyi bir yerdir.

LineBreak

LineBreakAkış içeriği gerçekleşmesi satır sonu neden olur. Aşağıdaki örnek kullanımını gösterir LineBreak.

<FlowDocument xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <Paragraph>
    Before the LineBreak in Paragraph.
    <LineBreak />
    After the LineBreak in Paragraph.
    <LineBreak/><LineBreak/>
    After two LineBreaks in Paragraph.
  </Paragraph>

  <Paragraph>
    <LineBreak/>
  </Paragraph>

  <Paragraph>
    After a Paragraph with only a LineBreak in it.
  </Paragraph>
</FlowDocument>

Aşağıdaki ekran görüntüsü nasıl Bu örnek işler gösterilir.

Ekran Görüntüsü: LineBreak örnek

Akış koleksiyon öğeleri

Yukarıdaki örneklerin çoğu, içinde BlockCollection ve InlineCollection program aracılığıyla akış içeriği oluşturmak için kullanılır. Örneğin, öğeleri eklemek için bir Paragraph, sözdizimi kullanabilirsiniz:

myParagraph.Inlines.Add(new Run("Some text"));

Bu ekler bir Run için InlineCollection , Paragraph. Bu örtülü aynıdır Run içinde bulunan bir Paragraph , işaretleme:

<Paragraph>

Some Text

</Paragraph>

Kullanarak bir örnek olarak BlockCollection, aşağıdaki örnek oluşturur Yeni bir Section ve kullanır Ekle yeni bir ekleme yöntemi Paragraph için Section içeriği.

            Dim secx As New Section()
            secx.Blocks.Add(New Paragraph(New Run("A bit of text content...")))
Section secx = new Section();
secx.Blocks.Add(new Paragraph(new Run("A bit of text content...")));

Öğeleri bir akış koleksiyonuna ek olarak, öğeleri de kaldırabilirsiniz. The following example deletes the last Inline element in the Span.

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

The following example clears all of the contents (Inline elements) from the Span.

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

Akış içeriği ile programlı olarak çalışırken, büyük olasılıkla bu Koleksiyonlar yoğun olarak kullanımını yapacaktır.

Akışı öğesi kullanıp kullanmadığını bir InlineCollection (Inlines) veya BlockCollection (engeller) içeren alt öğeleri hangi alt öğe türüne bağlıdır (Block veya Inline) üst. tarafından bulunabilir İçerik kuralları için içerik öğeleri içerik şemasında başlıklı sonraki bölümde özetlenen aktarın.

Note: Akış içeriği ile kullanılan koleksiyonun üçüncü bir türü ListItemCollection, ancak bu koleksiyon ile kullanılması bir List. Buna ek olarak, kullanılan çeşitli Koleksiyonlar vardır Table. See Tablo Genel Bakışı for more information.

İçerik şema

Farklı akış içerik öğelerinin sayısını göz önüne alarak, ne tür bir öğe içerebilir alt öğeleri izlemek zor olabilir. Aşağıdaki diyagramda, akış öğeler için içerik kuralları özetlemektedir. Oklar, olası üst/alt ilişkilerini temsil eder.

Diyagram: Akış içerik içerik şema

Yukarıdaki diyagramda görüldüğü gibi bir öğe için izin verilen çocukların mutlaka olup tarafından belirlenen değil bir Block öğesi veya bir Inline öğesi. Örneğin, bir Span (bir Inline öğesi) yalnızca Inline öðelerine while bir Figure (Ayrıca bir Inline öğesi) yalnızca Block alt öğeleri. Therefore, a diagram is useful for quickly determining what element can be contained in another. As an example, let's use the diagram to determine how to construct the flow content of a RichTextBox.

1. A RichTextBox must contain a FlowDocument which in turn must contain a Block-derived object. Aşağıda ilgili Yukarıdaki diyagramda dan kesimdir.

Diyagram: RichTextBox içerik kuralları

Thus far, this is what the markup might look like.

<RichTextBox>
  <FlowDocument>
    <!-- One or more Block-derived object… -->
  </FlowDocument>
</RichTextBox>

2. Diyagrama göre birçok program vardır Block öğeleri dahil olmak üzere içinden Seçilecek Paragraph, Section, Table, List, ve BlockUIContainer (Bkz. Yukarıdaki blok türetilmiş sınıfları). Let's say we want a Table. Yukarıdaki Diyagram uyarınca bir Table içeren bir TableRowGroup içeren TableRow hangi içeren öğeleri TableCell öğeleri içeren bir Block-türetilen nesne. Aşağıda ilgili kesim için ise Table Yukarıdaki diyagramda alınmış.

Diyagram: Üst /alt öğe şema tablo

Aşağıda ilgili marjı eşittir.

<RichTextBox>
  <FlowDocument>
    <Table>
      <TableRowGroup>
        <TableRow>
          <TableCell>
            <!-- One or more Block-derived object… -->
          </TableCell>
        </TableRow>
      </TableRowGroup>
    </Table>
  </FlowDocument>
</RichTextBox>

3. Again, one or more Block elements are required underneath a TableCell. To make it simple, let's place some text inside the cell. We can do this using a Paragraph with a Run element. Aşağıda, gösteriliyor Diyagramdaki karşılık gelen parçalardan olan bir Paragraph alabilir bir Inline öğesi ve bir Run (bir Inline öğesi) düz metin. yalnızca alabilir

Diyagram: Üst /alt öğe şema paragraf içinDiyagram: Çalıştıriçin üst/alt şema

Aşağıda tüm biçimlendirme de örnektir.

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

Metni özelleştirme

Genellikle metin akışı belgede içeriği en yaygın türüdür. Yukarıda sunulan nesneler metin nasıl oluşturulur, çoğu özelliklerini yönetmeniz için kullanılabilir olsa da, bu bölümde ele alınan metni özelleştirmek için diğer bazı yöntemler vardır.

Metin düzenlemelerini

Metin düzenlemelerini metne altı çizili, üst çizgi, temel ve üstü çizili efektler uygulamak izin (Bkz. Aşağıdaki resim). Bu düzenlemelerini kullanılarak eklenen TextDecorations özelliği nesneler dahil olmak üzere çok sayıda tarafından sergilenen Inline, Paragraph, TextBlock, ve TextBox.

Aşağıdaki örnek nasıl ayarlanacağını gösterir TextDecorations özelliği, bir Paragraph.

<FlowDocument ColumnWidth="200">
  <Paragraph TextDecorations="Strikethrough">
    This text will render with the strikethrough effect.
  </Paragraph>
</FlowDocument>
                Dim parx As New Paragraph(New Run("This text will render with the strikethrough effect."))
                parx.TextDecorations = TextDecorations.Strikethrough
Paragraph parx = new Paragraph(new Run("This text will render with the strikethrough effect."));
parx.TextDecorations = TextDecorations.Strikethrough;

The following figure shows how this example renders.

Ekran Görüntüsü: Varsayılan üstü çizili efektliMetin

Aşağıdakileri göster rakamlar nasıl üst çizgi, temel, ve altını düzenlemelerini işlemek, sırasıyla.

Ekran Görüntüsü: Üst çizgi TextDecoratorEkran Görüntüsü: Varsayılan taban çizgisi metin etkisiEkran Görüntüsü: Varsayılan altı çizili efektliMetin

Typography

Typography En akışı ile ilgili içerik dahil tarafından özelliği maruz TextElement, FlowDocument, TextBlock, ve TextBox. Bu özellik metin tipografi özellikleri/Çeşitlemeler (yani denetlemek için kullanılır üst simgeler ve alt simgeler vb. yapmak küçük veya büyük harfleri,).

The following example shows how to set the Typography attribute, using Paragraph as the example element.

<Paragraph
  TextAlignment="Left"
  FontSize="18" 
  FontFamily="Palatino Linotype"
  Typography.NumeralStyle="OldStyle"
  Typography.Fraction="Stacked"
  Typography.Variants="Inferior"
>
  <Run>
    This text has some altered typography characteristics.  Note
    that use of an open type font is necessary for most typographic
    properties to be effective.
  </Run>
  <LineBreak/><LineBreak/>
  <Run>
    0123456789 10 11 12 13
  </Run>
  <LineBreak/><LineBreak/>
  <Run>
    1/2 2/3 3/4
  </Run>
</Paragraph>

The following figure shows how this example renders.

Ekran Görüntüsü: Metin değişmiş tipografi ile

In contrast, the following figure shows how a similar example with default typographic properties renders.

Ekran Görüntüsü: Metin değişmiş tipografi ile

The following example shows how to set the Typography property programmatically.

            Dim par As New Paragraph()

            Dim runText As New Run("This text has some altered typography characteristics.  Note" & "that use of an open type font is necessary for most typographic" & "properties to be effective.")
            Dim runNumerals As New Run("0123456789 10 11 12 13")
            Dim runFractions As New Run("1/2 2/3 3/4")

            par.Inlines.Add(runText)
            par.Inlines.Add(New LineBreak())
            par.Inlines.Add(New LineBreak())
            par.Inlines.Add(runNumerals)
            par.Inlines.Add(New LineBreak())
            par.Inlines.Add(New LineBreak())
            par.Inlines.Add(runFractions)

            par.TextAlignment = TextAlignment.Left
            par.FontSize = 18
            par.FontFamily = New FontFamily("Palatino Linotype")

            par.Typography.NumeralStyle = FontNumeralStyle.OldStyle
            par.Typography.Fraction = FontFraction.Stacked
            par.Typography.Variants = FontVariants.Inferior
Paragraph par = new Paragraph();

Run runText = new Run(
    "This text has some altered typography characteristics.  Note" +
    "that use of an open type font is necessary for most typographic" +
    "properties to be effective.");
Run runNumerals = new Run("0123456789 10 11 12 13");
Run runFractions = new Run("1/2 2/3 3/4");

par.Inlines.Add(runText);
par.Inlines.Add(new LineBreak());
par.Inlines.Add(new LineBreak());
par.Inlines.Add(runNumerals);
par.Inlines.Add(new LineBreak());
par.Inlines.Add(new LineBreak());
par.Inlines.Add(runFractions);

par.TextAlignment = TextAlignment.Left;
par.FontSize = 18;
par.FontFamily = new FontFamily("Palatino Linotype");

par.Typography.NumeralStyle = FontNumeralStyle.OldStyle;
par.Typography.Fraction = FontFraction.Stacked;
par.Typography.Variants = FontVariants.Inferior;

Bakın WPF'de Tipografi bilgi için tipografi.

Ayrıca bkz.

Kavramlar

Performans İyileştirme Text

WPF'de Tipografi

TextElement İçerik Modeli Genel Bakış

RichTextBox Genel Bakış

WPF'deki Belgeler

Tablo Genel Bakışı

Ek açıklamalara Genel Bakış

Diğer Kaynaklar

Akış İçerik Öğeleri Nasıl Yapılır Konuları