繁体   English   中英

如何使WPF StackPanel适合网格单元格

[英]How to Fit WPF StackPanel to Grid Cell

我的WPF项目中有一个StackPanel控件,它位于Grid的第0列第2行。 如何将StackPanel大小自动调整为该网格单元的大小? 将StackPanel宽度和高度设置为“auto”只会将其大小调整为其内容。 我可以明确地将其宽度和高度设置为数值,但我想知道是否有更清晰,更准确的方法。 谢谢。

相关的XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="74*"/>
        <RowDefinition Height="74*"/>
        <RowDefinition Height="421*"/>
    </Grid.RowDefinitions>
    <Label Content="{StaticResource LoginWindow_Title}" Style="{StaticResource TitleH1}" Grid.ColumnSpan="2"/>
    <Label Content="{StaticResource LoginWindow_Subtitle}" Style="{StaticResource TitleH2}" Grid.Row="1" Grid.ColumnSpan="2"/>
    <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Center" Grid.Row="2" VerticalAlignment="Top">
        <StackPanel HorizontalAlignment="Left" Grid.Row="2" VerticalAlignment="Top">
            <Label Content="Log in"/>
        </StackPanel>
    </Border>
</Grid>

答案总是一样的...... 不要使用StackPanel进行布局 它们主要用于排列不太可能改变大小的UI元素。 即使你调整大小StackPanel到正确的尺寸,它不会帮助,因为一个StackPanel 没有重新排列或调整其内容的项目。 如果您需要此功能,则必须使用其他Panel控件之一,例如Grid

你的StackPanel不在Grid ,它在Border 因此,要获取所有可用空间,您可以为其及其父Border设置水平和垂直对齐以Stretch

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="74*"/>
        <RowDefinition Height="74*"/>
       <RowDefinition Height="421*"/>
    </Grid.RowDefinitions>

    <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
            BorderBrush="Black" BorderThickness="1"  Grid.Row="2">
        <StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
            <Label Content="Log in"/>
        </StackPanel>
    </Border>
</Grid>

即便如此,像其他提到的那样,在这种情况下,其他一些小组几乎肯定会更好。

<网格>
<边框>
<StackPanel VerticalAlignment =“Center”......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM