带有子网格的MulitGrid内容相应地调整大小

时间:2012-01-20 18:03:46

标签: wpf vb.net wpf-controls

我不知道这是否已经回答但是我想要做的是我有一个带3行的parentGrid,前两个是菜单条和工具栏,第三行是填充了的子网格从工具栏中选择的选项。问题是我希望在子网格中加载的表单的高度不超过我在parentGrid中设置该行所等的高度。

有没有一种有效的方法呢?

这里基本上是我的代码

<Grid x:Name="ParentGrid" Margin="0" >
    <Grid.RowDefinitions>
        <RowDefinition Height="22"></RowDefinition>
        <RowDefinition Height="90"></RowDefinition>
        <RowDefinition Height="544*"></RowDefinition>
        <!--516<RowDefinition Height="80*"></RowDefinition>
        <RowDefinition Height="10*"></RowDefinition>-->
    </Grid.RowDefinitions>

    <DockPanel></DockPanel><!--Dock Panel Menu Strip-->
    <DockPanel></DockPanel><!-- Dock Panel ToolBar-->

    <Grid x:Name="ChildGrid" Grid.Row="2" Height="544">
    </Grid>

</Grid>

2 个答案:

答案 0 :(得分:0)

将RowDefinition中的高度设置为您想要的Grid高度,然后使用Height="*"创建额外的RowDefinition以占用剩余空间

<Grid x:Name="ParentGrid" Margin="0" >
    <Grid.RowDefinitions>
        <RowDefinition Height="22"></RowDefinition>
        <RowDefinition Height="90"></RowDefinition>
        <RowDefinition Height="544"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>

    <DockPanel></DockPanel><!--Dock Panel Menu Strip-->
    <DockPanel></DockPanel><!-- Dock Panel ToolBar-->

    <Grid x:Name="ChildGrid" Grid.Row="2">
    </Grid>

</Grid>

RowDefinitions中的*表示“所有剩余空间”。向其添加数字可定义列将获得的剩余空间比率。例如,如果您说一列将是1*而另一列将是2*,则意味着第二列将占用两倍于第一列的空间。如果您有一列占用544*而另一列占用10*,则意味着可用空间将分成554个部分,544个部分将被分配到第一列,将给出10个部分到第二栏。

答案 1 :(得分:0)

对我有用的解决方案是,我使用Grid作为容器,而不是使用ScrollViewer作为内容子