0
請幫我理解此操作的結果。WPF RichTextBox跨度更改爲運行
我有一個簡單的測試應用程序,其中包含以下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>
我無法控制此跨度的更改運行。 我需要幫助。
鍵入內容時,您將覆蓋「」對象中的內容。這只是做你要求它做的事情。這是一個嵌套對象,其中包含''的''。您的新(手動輸入)內容僅包含一個「運行」。 –
那麼,有沒有辦法將它直接導入到跨度而不是手動覆蓋它? – Naresh
我知道的一種方法是覆蓋關鍵事件並附加文本。但那非常乏味。另一種方式我保留一個hiddent UI元素,它不會改變。但我覺得那些不準確的方式。 – Naresh