C# 如何删除这个额外的网格空间?

C# 如何删除这个额外的网格空间?,c#,xamarin,C#,Xamarin,如何阻止网格垂直扩展并在行之间添加所有额外空间 这就是它应该看起来的样子(忽略背景颜色的变化) 使用“自动”而不是“*” 这似乎是一个错误,网格高度被视为图像以其全高显示 <Grid BackgroundColor="CornflowerBlue"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width=

如何阻止网格垂直扩展并在行之间添加所有额外空间



这就是它应该看起来的样子(忽略背景颜色的变化) 使用“自动”而不是“*”


这似乎是一个错误,网格高度被视为图像以其全高显示

<Grid BackgroundColor="CornflowerBlue">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>

    <Image Source="testsquare" />
    <Image Source="testsquare" Grid.Column="1" />

</Grid>

网格中有一个属性

网格
具有控制行和列之间间距的属性。以下属性可用于自定义网格

  • 列间距–列之间的空间量。此属性的默认值为
    6
  • 行间距–行与行之间的间距。此属性的默认值为
    6
您可以设置
行间距
列间距
来检查是否可以解决此问题

<StackLayout Padding="5">

    <Grid RowSpacing="5" ColumnSpacing="5">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Image Source="icon.png" BackgroundColor="Accent"/>
        <Image Source="icon.png"
               BackgroundColor="Accent"
               Grid.Column="1" />

        <Image Source="icon.png"
               BackgroundColor="Accent"
               Grid.Row="1" />
        <Image Source="icon.png"
               BackgroundColor="Accent"
               Grid.Column="1"
               Grid.Row="1" />
    </Grid>
</StackLayout>


关于Image
Aspect
属性确定如何缩放图像以适应显示区域,使用
Fill
AspectFill
(默认值为
AspectFit

您已经确定了不希望发生的事情。您需要如何指定您希望发生的事情。我觉得这是相当明显的…@b由于
网格中有一个间距属性,您可以查看我的答案,以检查它是否可以解决此问题。如果没有,您可以在GitHub中作为bug提交。@b您好,如果答案有帮助,感谢您在andvance中对其进行评分或投票。^*这对标签之类的东西很管用。。。但对于图像,一切都会变得一团糟,如果只是这4幅图像,你可以在父stackpanel中使用2个stackpanel来尝试,而不是仅使用4个。。我也尝试过使用stackpanels。结果更糟。嗯,我试着用WPF将所有*切换到自动,结果很好。图像之间没有更多的空间。但它将是原始图像的大小。形象不会被扭曲。可能是StackLayout造成的?我不能在WPFif中使用它,我将宽度设置为绝对值,如200,高度设置为*我得到了想要的效果。但我需要它的规模。
<Grid BackgroundColor="CornflowerBlue">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>

    <Image Source="testsquare" />
    <Image Source="testsquare" Grid.Column="1" />

</Grid>
<StackLayout Padding="5">

    <Grid RowSpacing="5" ColumnSpacing="5">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Image Source="icon.png" BackgroundColor="Accent"/>
        <Image Source="icon.png"
               BackgroundColor="Accent"
               Grid.Column="1" />

        <Image Source="icon.png"
               BackgroundColor="Accent"
               Grid.Row="1" />
        <Image Source="icon.png"
               BackgroundColor="Accent"
               Grid.Column="1"
               Grid.Row="1" />
    </Grid>
</StackLayout>