防止RichTextBox's的高度增长

本文关键字:高度 RichTextBox 防止 | 更新日期: 2023-09-27 18:18:06

我的WPF应用程序中有一个RichTextBox控件。我用它来显示日志消息。下面是代码:

<Grid x:Name="grid"
      Margin="20,120,20,20">
  <RichTextBox x:Name="txtLog"
               Height="{Binding ElementName=grid, Path=ActualHeight, Mode=OneWay}"
               FontSize="15"
               ScrollViewer.HorizontalScrollBarVisibility="Auto"
               ScrollViewer.VerticalScrollBarVisibility="Auto" />
</Grid>

这个代码在一个UserControl中,这个UserControl是另一个Window的内容。在Window中,我有一个ScrollViewer,每当内容大于容器时显示滚动条。下面是相应的代码:

<ScrollViewer x:Name="content"
              VerticalScrollBarVisibility="Auto"
              Margin="0,70,0,0">
  <Controls:TransitioningContentControl x:Name="transition"
                                        Transition="LeftTransition" />
</ScrollViewer>

我最初的问题是,每当日志消息填充RichTextBox时,它就会增长并显示容器上的滚动条。我通过将RichTextBox的高度绑定到其父网格的ActualHeight来解决这个问题。

一切正常。然而,还有一个小问题。如果我调整父窗口的大小,让它变大,然后把它缩小到原来的大小,RichTextBox的高度不会回到原来的值,它会再次显示滚动条。

我该如何解决这个问题?

防止RichTextBox's的高度增长

Change

<RichTextBox x:Name="txtLog"
             Height="{Binding ElementName=grid, Path=ActualHeight, Mode=OneWay}"
             FontSize="15"
             ScrollViewer.HorizontalScrollBarVisibility="Auto"
             ScrollViewer.VerticalScrollBarVisibility="Auto" />

<RichTextBox x:Name="txtLog"
             HorizontalAlignment="Stretch"
             VerticalAlignment="Stretch"
             FontSize="15"
             ScrollViewer.HorizontalScrollBarVisibility="Auto"
             ScrollViewer.VerticalScrollBarVisibility="Auto" />

而不是将它绑定到ActualWidth给它水平和垂直对齐拉伸