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);
}
请帮我理解这个操作的结果。
我有一个简单的测试应用程序,其中包含以下内容 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);
}