我有一个RichTextbox,现在我正在输入一些文本。视图中的文本也被更改了,但是如果我现在想要访问后面代码中的文本,它总是给我占位符文本,而不是我输入的文本。
这意味着第一次查找(PlaceHolder):
占位符
代码来自The RichTextBox:
<Grid Grid.Row="2">
<RichTextBox x:Name="rtb1" IsHitTestVisible="True" HorizontalAlignment="Right"
TextChanged="OnDocumentChanged" BorderThickness="0" FontSize="40"
Background="Transparent" Panel.ZIndex="2">
<FlowDocument TextAlignment="Center" >
<Paragraph >
<Run Text="Hallo" />
</Paragraph>
</FlowDocument>
</RichTextBox>
<TextBox x:Name="tb1" Style="{StaticResource tb1}" Text="Eingabe"
FontSize="40" TextWrapping="Wrap" Panel.ZIndex="1"
TextAlignment="Center" Foreground="DarkGray">
</TextBox>
</Grid>
然后我在视图中的改变:
ViewChange
然后我试着从代码后面获取文本:
string richText = new TextRange(rtb1.Document.ContentStart, rtb1.Document.ContentEnd).Text;
MessageBox.Show(richText);
但是输出是这样的:
输出我怎样才能得到我在代码后面写的东西?
我通过删除<FlowDocument/>
并替换为手动宽度和高度来调整您的脚本。
试试这个:
<Grid Grid.Row="2">
<RichTextBox x:Name="rtb1" IsHitTestVisible="True" HorizontalAlignment="Center"
TextChanged="rtb1_TextChanged" BorderThickness="0" FontSize="40"
Background="Transparent" Panel.ZIndex="2" Width="400" Height="100"
VerticalAlignment="Top" Cursor="Arrow"/>
<TextBox x:Name="tb1" Text="Eingabe" FontSize="40" TextWrapping="Wrap"
Panel.ZIndex="1" TextAlignment="Center" Foreground="DarkGray"/>
</Grid>
我在脚本中添加了一个try-catch,这样你可以更容易地调试:
try
{
string richText = new TextRange(rtb1.Document.ContentStart, rtb1.Document.ContentEnd).Text;
Console.WriteLine(richText);
MessageBox.Show(richText);
}
catch (System.Windows.Markup.XamlParseException ex)
{
Console.WriteLine(ex.StackTrace);
}
It works for me