WPF RichTextBox 跨度更改为 运行

WPF RichTextBox Span changes to Run

请帮我理解这个操作的结果。

我有一个简单的测试应用程序,其中包含以下内容 XAML。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <RichTextBox x:Name="rtb">
        <FlowDocument>
            <Paragraph>
                <Span x:Name="def" Tag="default">
                    <Run>asd</Run>
                </Span>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>
    <TextBox x:Name="tx" Grid.Row="1" TextWrapping="Wrap"/>
</Grid>

我在后面的代码中有以下内容。

public MainWindow()
{
    InitializeComponent();
    rtb.TextChanged += Rtb_TextChanged;

}
private void Rtb_TextChanged(object sender, TextChangedEventArgs e)
{
    tx.Text = XamlWriter.Save(rtb.Document);
}

当我 运行 这段代码,并在上面 RichTextBox 中输入一些字母时,下面的文本框显示 xaml.

奇怪的是,它失去了跨度并转换为 运行。

<FlowDocument PagePadding="5,0,5,0" AllowDrop="True" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Paragraph>as
        <Run xml:lang="en-in" xml:space="preserve"> </Run> d
    </Paragraph>
</FlowDocument>

我无法控制将此跨度更改为 运行。 我需要帮助。

用这个例子看看区别:

    <Grid>
        <Grid.RowDefinitions>
        <RowDefinition  Height="*"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>
        <RichTextBox x:Name="rtb">
            <FlowDocument>
                <Paragraph>
                    <Span x:Name="def" Tag="default">
                        <Run>asd</Run>
                    </Span>
                </Paragraph>
            <Paragraph>
                <Span x:Name="def1" Tag="default">
                    <Run Foreground="Red">asd</Run>
                    <Run>new</Run>
                </Span>
            </Paragraph>
        </FlowDocument>
        </RichTextBox>
        <TextBox x:Name="tx" Grid.Row="1" TextWrapping="Wrap"/>
        <Button Content="Click Me" Grid.Row="2" Click="tx_Click"/>
</Grid> 

它包含两种段落。一个带有简单 运行,通过 Save 方法删除,另一个具有前景 属性,未删除(通过单击按钮检查)

(编辑)后面的代码:

    private void tx_Click(object sender, RoutedEventArgs e)
    {
        tx.Text = System.Windows.Markup.XamlWriter.Save(rtb.Document);
    }