FlowDocument 不能由多个 RichTextBox 控件直接共享。
因此,您需要先“分离”该文档...
所以
RTB2.Document = RTB1.Document;
不会工作,会导致你的例外..
FlowDocument doc = RTB1.Document;
RTB1.Document = new FlowDocument(); //Document cannot be null, so therefor the new FlowDocument instance
RTB2.Document = doc;
会像魅力一样工作......
我的代码示例:
xml:
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RichTextBox x:Name="RTB1" />
<RichTextBox x:Name="RTB2" Grid.Column="1" />
<Button x:Name="button" Grid.Row="1" Grid.ColumnSpan="2" Content="click" Click="button_Click" />
</Grid>
</Window>
后面的代码..
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
FlowDocument doc = RTB1.Document;
RTB1.Document = new FlowDocument();
RTB2.Document = doc;
}
}
它不是书中最漂亮的,但它确实有效......
希望这可以帮助..