为什么我的网格布局没有占据完整的宽度

时间:2018-05-18 09:42:31

标签: c# xaml xamarin uwp xamarin.uwp

我有一个包含六行的网格(每行是一个堆栈布局)。

在我的第五行(即第五个堆栈布局)中,我有一个网格。我为该网格提供了100%的宽度,但该网格没有占据宽度的100%。

如何解决此问题?

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0" Orientation="Vertical">
    </StackPanel>
    <StackPanel Grid.Row="1" Orientation="Vertical">
    </StackPanel>
    <StackPanel Grid.Row="2" Orientation="Vertical">
        <Grid Width="100%">
        </Grid>
    </StackPanel>
    <StackPanel Grid.Row="3" Orientation="Vertical">
    </StackPanel>
</Grid>

3 个答案:

答案 0 :(得分:2)

我认为,您可以尝试删除堆栈面板,并且可以在Grid上使用Grid.Row,这样可以解决问题。

答案 1 :(得分:1)

我之前没有看到UWP中使用的百分比,甚至认为它不是有效的语法。我认为您应该使用HorizontalAlignment="Stretch"来将Grid拉伸到全宽。

答案 2 :(得分:1)

@Martin Zikmund和@Durai Amuthan.H的建议都是正确的。 UWP XAML布局中的Width=100%不支持。

如果你想让Grid的宽度与StackPanel的宽度相同,并在调整窗口大小时自动调整大小,你也可以直接删除Width,如下所示:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0" Orientation="Vertical">
    </StackPanel>
    <StackPanel Grid.Row="1" Orientation="Vertical">
    </StackPanel>
    <StackPanel Grid.Row="2" Orientation="Vertical">
        <Grid Background="Red">
            <TextBlock Text="abc"></TextBlock>
        </Grid>
    </StackPanel>
    <StackPanel Grid.Row="3" Orientation="Vertical">
    </StackPanel>
</Grid>
相关问题