为什么我的富文本框在我键入文本时不更改文本?

  • 本文关键字:文本 c# wpf xaml richtextbox
  • 更新时间 :
  • 英文 :


我有一个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

相关内容

  • 没有找到相关文章

最新更新