请帮助我了解此操作的结果。
我有一个简单的测试应用程序,其中包含以下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>
我无法控制此跨度的更改以运行。 我需要帮助。
答案 0 :(得分:1)
使用此示例查看差异:
<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>
它包含两种段落。一个有一个简单的Run,它被Save
方法删除,另一个有Foreground属性,没有删除(点击按钮检查这个)
(编辑):
private void tx_Click(object sender, RoutedEventArgs e)
{
tx.Text = System.Windows.Markup.XamlWriter.Save(rtb.Document);
}