【问题标题】:WPF RichTextBox increase grid row sizeWPF RichTextBox 增加网格行大小
【发布时间】:2013-10-07 14:13:21
【问题描述】:

我有以下 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 或顶行高度吗?

谢谢。

【问题讨论】:

  • 现在您已将前两行配置为根据需要占用尽可能多的高度,并且您已告知底行占用剩余空间。听起来你只需要给 RichTextBox 一个特定的高度或最大高度,这样它就不会变得太大。
  • 在中间行,我有拆分器供用户选择根据需要调整底行和顶行的大小。这样,顶部和底部网格行可能没有固定的最大尺寸。我必须将顶行高度配置为“自动”,因为它基于扩展程序。

标签: c# wpf


【解决方案1】:

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

【讨论】:

  • 我应该在哪里添加新行?我不是很明白。我没有 DataGrid 但有 Grid。
  • 可以设置每行的最小高度
  • 是的,我可以,但它不会阻止底行滑动到其最小高度。我猜滑动不是用户友好的功能。我可以完全避免滑动效应吗?由于存在 Splitter,我无法预测每行的最小高度。
【解决方案2】:

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

我以这种方式重新设计了 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 是折叠状态下的高度ExpanderGridSplitter 被认为在开头有 Visibility.Collapsed

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

  • 打开扩展集TopRow.Height = 160GridSplitter.Visibility = Visibility.Expanded
  • OnCollapsed 设置 TopRow.Height = 42GridSplitter.Visibility = Visibility.Collapsed

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

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2023-03-27
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多