1

我有以下 XAML 源代码来演示我的工作。

我希望,在垂直调整组大小时,让第一个 groupbox 展开,直到其最大高度,然后,当达到最大高度时,展开第三个 groupbox。第三个 groupbox 也有一个 min height 属性。

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" x:Name="Screen_1_Name"   
    x:Class="TestExpansionScreens.Screen_1"
    Width="400" Height="400">

    <Grid x:Name="LayoutRoot" Background="White" Margin="0,0,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <GroupBox Header="Thing1" Background="LightGreen" Grid.Row="0" Grid.Column="0" MaxHeight="350">
            <Button Content="Stuff1"  />
        </GroupBox>

        <GroupBox Header="Thing2" Background="LightBlue" Grid.Row="1" Grid.Column="0">
            <TextBox Text="Stuff2" Height="60" />
        </GroupBox>

        <GroupBox Header="Thing3" Background="Pink" Grid.Row="2" Grid.Column="0">           
            <TextBox Text="Stuff3"  />          
        </GroupBox>
    </Grid>
</UserControl>

通常,当我只想扩展单个控件以填充可用空间时,我使用 DockPanel。我已经用各种各样的网格和停靠面板构建了这个示例,但是,我无法解决如何使它工作。关于如何实现它的任何想法?

谢谢

4

1 回答 1

0

您必须在第一个 RowDefinition 上设置 MaxHeight,而不是在 GroupBox 上。该行将增长到该高度,然后所有多余的空间将被第三行占据。您还可以将 MinHeight 添加到第三行。

    <Grid x:Name="LayoutRoot" Background="White" Margin="0,0,0,0">
        <Grid.RowDefinitions>
            <RowDefinition MaxHeight="350" />
            <RowDefinition Height="Auto"/>
            <RowDefinition MinHeight="150" />
        </Grid.RowDefinitions>

        <GroupBox Header="Thing1" Background="LightGreen" Grid.Row="0" Grid.Column="0">
            <Button Content="Stuff1"  />
        </GroupBox>

        <GroupBox Header="Thing2" Background="LightBlue" Grid.Row="1" Grid.Column="0">
            <TextBox Text="Stuff2" Height="60" />
        </GroupBox>

        <GroupBox Header="Thing3" Background="Pink" Grid.Row="2" Grid.Column="0">
            <TextBox Text="Stuff3"  />
        </GroupBox>
    </Grid>
于 2013-01-25T03:29:58.363 回答