Пожалуйста, помогите мне понять результат этой операции.WPF RichTextBox Span изменяется на 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>
Я не могу контролировать изменение этого диапазона для запуска. Мне нужна помощь.
Вы переопределяете содержимое объекта '' при вводе. Это просто то, что вы просите об этом. Это был вложенный объект с '', содержащий ''. Ваше новое (введенное вручную) содержимое состоит только из 'Run'. –
Итак, есть ли способ, которым я направляю его в диапазон, а не вручную переопределять его? – Naresh
Один из способов, которым я знаю, - переопределить ключевые события и добавить текст. Но это очень утомительно. Еще один способ сохранить элемент hident ui, и он не меняется. Но я чувствую, что это неточно. – Naresh