2013-10-07 143 views
0

我有以下XAMLWPF的RichTextBox增加网格行大小

<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的文本行填充它会自动提高其heigth以及扩展和网格行的高度,这样的项目在下排滑落。

我想让底部网格行高度独立于richtextbox。我可以在不将RichTextBox高度绑定到扩展器或顶部行高的情况下执行此操作吗?

谢谢。

+0

现在,您已经配置了最上面两行,以获取尽可能多的高度,并且您已经告诉下面一行需要留下任何空间。这听起来像你只需要给RichTextBox一个特定的高度或者一个最大高度,这样它就不会变得太大。 –

+0

在中间一排我有分线器让用户可以根据需要调整底部和顶部行的大小。这样顶部和底部网格行可能没有固定的最大尺寸。我必须配置顶行高度为“自动”,因为它基于展开。 – gunboxer

回答

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在折叠状态下的高度为ExpanderGridSplitter认为在开始时有Visibility.Collapsed

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

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

在160,我将使用旧行高度代替(前坍塌)。而已。看起来一切正常。

谢谢。

1

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

+0

我应该在哪里添加新行?我不太明白。我没有DataGrid,但有网格。 – gunboxer

+0

您可以设置每行的最小高度 – 2013-10-07 05:22:50

+0

是的,我可以,但它不会阻止底行滑动到其最小高度。我猜滑动不是userfriendy功能。我完全可以避免滑动效果吗?由于Splitter存在,我无法预测每行的最小高度。 – gunboxer