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);
}
는이 코드를 실행하고 텍스트 상자 나에게 XAML을 보여줍니다 아래, 위 RichTextBox
일부 문자를 입력합니다.
이상하게도 스팬이 손실되어 실행으로 변환됩니다.
<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
방법에 의해 제거되는 간단한 실행, 다른, (버튼을 클릭하여 확인)(편집)와 하나 입력 할 때 ''개체의 내용을 재정의하고 있습니다. 그것은 당신이 요구하는 것을하는 것입니다. 그것은''이 ''을 포함하는 중첩 된 객체였습니다. 귀하의 새로운 (수동으로 입력 한) 내용은 오직'실행 '으로 구성됩니다. –
그래서 수동으로 재정의하는 대신 범위로 전달하는 방법이 있습니까? – Naresh
내가 아는 한 가지 방법은 키 이벤트를 무시하고 텍스트를 추가하는 것입니다. 그러나 그것은 매우 지루합니다. 또 다른 방법은 내가 hiddent UI 요소를 유지하고 그것은 나던 변화. 그러나 나는 그것이 정확한 방법이 아니라고 느낍니다. – Naresh