WPF RichTextBox增加网格行大小

时间:2013-10-07 04:32:21

标签: c# wpf

我有以下XAML

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>  <!--Here Expander with RichTextBox within-->
      <RowDefinition Height="Auto"/>  <!--Here Splitter-->
      <RowDefinition Height="*"/>     <!--Here some other controls-->
   </Grid.RowDefinitions>
...

问题是当Expander打开并且RichTextBox填充文本行时,它会自动增加其高度以及扩展器和网格行高度,这样底部行上的项目会向下滑动。

我希望底部网格行高度与richtextbox无关。我可以不将RichTextBox高度绑定到Expander或顶行高度吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以向网格添加一行,并为该行定义MinHeight。  将DataGrid垂直对齐设置为拉伸VerticalAlignment = Stretch。还要为窗口设置默认高度大小。

答案 1 :(得分:0)

好。我自己找到了最佳解决方案。

我以这种方式重写了xaml:

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition Name="TopRow" Height="42"/>  <!--Here Expander with RichTextBox within-->
      <RowDefinition Height="Auto"/>  <!--Here GridSplitter-->
      <RowDefinition Height="*"/>     <!--Here some other controls-->
   </Grid.RowDefinitions>
...

开始时Expander总是崩溃。 42是折叠状态下的Expander的高度。 GridSplitter在开始时被视为Visibility.Collapsed

所以我为扩展器创建了两个触发器:

  • OnExpanded set TopRow.Height = 160GridSplitter.Visibility = Visibility.Expanded
  • OnCollapsed set TopRow.Height = 42GridSplitter.Visibility = Visibility.Collapsed

我将使用旧的行高(在折叠之前)代替160。而已。似乎一切都很好。

谢谢。