<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="FlowDocument Optimal Paragraph Sample">
<StackPanel>
<CheckBox Click="ToggleHyphenation" Content="Automatic Hyphenation"/>
<CheckBox Click="ToggleOptimalParagraph" Content=" Enable Optimal Paragraph Layout"/>
<CheckBox Click="ToggleColumnFlex" Content="Enable Flexible Columns"/>
<Slider Name="columnWidthSlider" ValueChanged="ChangeColumnWidth"/>
<Slider Name="columnGapSlider" ValueChanged="ChangeColumnGap"/>
<FlowDocumentReader Name="flowReader">
<FlowDocument Name="flowDoc" TextAlignment="Justify"
IsOptimalParagraphEnabled="True" IsHyphenationEnabled="True"
IsColumnWidthFlexible="True" Background="AliceBlue"
ColumnWidth="300" ColumnGap="20">
<Paragraph><Italic>this is a test</Italic></Paragraph>
<Paragraph>
<Hyperlink NavigateUri="http://www-cs-faculty.stanford.edu/~knuth/">
- Donald E. Knuth
</Hyperlink>
</Paragraph>
<Paragraph><Bold>Principle of Optimal Paragraph</Bold></Paragraph>
<Paragraph>this is a test <Italic>italic</Italic> </Paragraph>
<Paragraph>this is a test</Paragraph>
<Paragraph>this is a test</Paragraph>
<Paragraph>this is a test</Paragraph>
</FlowDocument>
</FlowDocumentReader>
</StackPanel>
</Window>
//File:Window.xaml.vb
Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Media
Imports System.Windows.Shapes
Namespace WpfApplication1
Public Partial Class Window1
Inherits Window
Private Sub ToggleHyphenation(sender As [Object], args As RoutedEventArgs)
flowDoc.IsHyphenationEnabled = DirectCast(sender, CheckBox).IsChecked.Value
End Sub
Private Sub ToggleOptimalParagraph(sender As [Object], args As RoutedEventArgs)
flowDoc.IsOptimalParagraphEnabled = DirectCast(sender, CheckBox).IsChecked.Value
End Sub
Private Sub ToggleColumnFlex(sender As [Object], args As RoutedEventArgs)
flowDoc.IsColumnWidthFlexible = DirectCast(sender, CheckBox).IsChecked.Value
End Sub
Private Sub ChangeColumnWidth(sender As [Object], args As RoutedEventArgs)
If columnWidthSlider.Value = 0 Then
flowDoc.ColumnWidth = 100
ElseIf columnWidthSlider.Value = 1 Then
flowDoc.ColumnWidth = 200
ElseIf columnWidthSlider.Value = 2 Then
flowDoc.ColumnWidth = 300
ElseIf columnWidthSlider.Value = 3 Then
flowDoc.ColumnWidth = 400
ElseIf columnWidthSlider.Value = 4 Then
flowDoc.ColumnWidth = 500
End If
End Sub
Private Sub ChangeColumnGap(sender As [Object], args As RoutedEventArgs)
If columnGapSlider.Value = 0 Then
flowDoc.ColumnGap = 5
ElseIf columnGapSlider.Value = 1 Then
flowDoc.ColumnGap = 10
ElseIf columnGapSlider.Value = 2 Then
flowDoc.ColumnGap = 15
ElseIf columnGapSlider.Value = 3 Then
flowDoc.ColumnGap = 20
ElseIf columnGapSlider.Value = 4 Then
flowDoc.ColumnGap = 25
End If
End Sub
End Class
End Namespace