0

我有以下 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>
...

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

我想让底部网格行高独立于richtextbox。我可以在没有将 RichTextBox 高度绑定到 Expander 或顶行高度的情况下做到这一点吗?

谢谢你。

4

2 回答 2

1

您可以在网格中再添加一个行,并MinHeight为该行定义一个。将您的 DataGrid 垂直对齐设置为 stretch VerticalAlignment = Stretch。还为 Window 设置默认高度大小。

于 2013-10-07T04:58:37.250 回答
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 集TopRow.Height = 160GridSplitter.Visibility = Visibility.Expanded
  • OnCollapsed 集TopRow.Height = 42GridSplitter.Visibility = Visibility.Collapsed

而不是 160,我将使用旧的行高(折叠之前)。就是这样。看起来一切正常。

谢谢你。

于 2013-10-07T06:13:21.263 回答