<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.cs
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WpfApplication1
{
public partial class Window1 : Window
{
void ToggleHyphenation(Object sender, RoutedEventArgs args)
{
flowDoc.IsHyphenationEnabled = ((CheckBox)sender).IsChecked.Value;
}
void ToggleOptimalParagraph(Object sender, RoutedEventArgs args)
{
flowDoc.IsOptimalParagraphEnabled = ((CheckBox)sender).IsChecked.Value;
}
void ToggleColumnFlex(Object sender, RoutedEventArgs args)
{
flowDoc.IsColumnWidthFlexible = ((CheckBox)sender).IsChecked.Value;
}
void ChangeColumnWidth(Object sender, RoutedEventArgs args)
{
if (columnWidthSlider.Value == 0)
{
flowDoc.ColumnWidth = 100;
}
else if (columnWidthSlider.Value == 1)
{
flowDoc.ColumnWidth = 200;
}
else if (columnWidthSlider.Value == 2)
{
flowDoc.ColumnWidth = 300;
}
else if (columnWidthSlider.Value == 3)
{
flowDoc.ColumnWidth = 400;
}
else if (columnWidthSlider.Value == 4)
{
flowDoc.ColumnWidth = 500;
}
}
void ChangeColumnGap(Object sender, RoutedEventArgs args)
{
if (columnGapSlider.Value == 0)
{
flowDoc.ColumnGap = 5;
}
else if (columnGapSlider.Value == 1)
{
flowDoc.ColumnGap = 10;
}
else if (columnGapSlider.Value == 2)
{
flowDoc.ColumnGap = 15;
}
else if (columnGapSlider.Value == 3)
{
flowDoc.ColumnGap = 20;
}
else if (columnGapSlider.Value == 4)
{
flowDoc.ColumnGap = 25;
}
}
}
}