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>
このスパンの変更を制御することはできません。 私はそれに助けが必要です。
:背後にあるコードでは削除されませんForegroundプロパティを持ってい
Save
方法で除去される単純なファイル名を指定して実行、およびその他、(ボタンをクリックすることで、これを確認してください)(編集)とワン入力時に ''オブジェクトのコンテンツを上書きしています。それはあなたがすることを求めていることをやっているだけです。これは ''のネストされたオブジェクトで、 ' 'を含んでいます。あなたの新しい(手動で入力された)コンテンツは、 '実行'のみで構成されます。 –
それで、手動でオーバーライドするのではなく、スパンに向ける方法はありますか? – Naresh
私が知っている一つの方法は、キーイベントを無効にしてテキストを追加することです。しかし、それは非常に面倒です。もう一つの方法は、私はヒッテントUIの要素を維持し、それは変わらない。しかし、私はそれらが正確な方法ではないと感じます。 – Naresh