Image 如何在Xamarin表单中正确使用网格中多行上的图像

Image 如何在Xamarin表单中正确使用网格中多行上的图像,image,xamarin,xamarin.forms,grid,stacklayout,Image,Xamarin,Xamarin.forms,Grid,Stacklayout,我正在尝试在我的Xamarin Forms应用程序中创建一个自定义、材质样式的卡片单元格。我的外观非常低沉,但我对其中的图像有问题。我希望它接触顶部和底部边缘,左手边,并且是方形的形状,同时保持纵横比。但现在,我得到的只是一张不起眼的小照片: (我不得不用油漆覆盖公司的图片,但请相信我,它们的大小差不多) 这是我真正想要的(同样,请原谅油漆工作) 我在网格视图中使用一个图像,在第一列中,跨越所有4行。我已经尝试过所有的布局选项,我过去理解这些,但现在我在猜测自己。我还尝试将图像放入Stack

我正在尝试在我的Xamarin Forms应用程序中创建一个自定义、材质样式的卡片单元格。我的外观非常低沉,但我对其中的图像有问题。我希望它接触顶部和底部边缘,左手边,并且是方形的形状,同时保持纵横比。但现在,我得到的只是一张不起眼的小照片:

(我不得不用油漆覆盖公司的图片,但请相信我,它们的大小差不多)

这是我真正想要的(同样,请原谅油漆工作)

我在网格视图中使用一个图像,在第一列中,跨越所有4行。我已经尝试过所有的布局选项,我过去理解这些,但现在我在猜测自己。我还尝试将图像放入StackLayout,因为我认为可以展开StackLayout的子级,但仍然没有骰子。下面是我现在的简化Xaml:

<Frame CornerRadius="10"  
    Margin="10, 5"
    IsClippedToBounds="True"   
    BackgroundColor="White">

  <Grid BackgroundColor="White" >
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="Auto" />
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*"  />
    </Grid.RowDefinitions>

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

    <StackLayout Grid.Row="0" Grid.Column="0" Grid.RowSpan="4" 
                 HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
      <Image HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Aspect="AspectFill" Source="{Binding ImageSource}"/>
    </StackLayout>

    <Label Grid.Row="0" Grid.Column="1"
         Text="{Binding Favourite.FavKindName}"
         FontSize="{DynamicResource InfoLargerTextFontSize}"/>

    <Image Grid.Row="1" Grid.Column="3" Grid.RowSpan="4" Source="Contact.png"
           VerticalOptions="CenterAndExpand" >
      <Image.GestureRecognizers>
        <TapGestureRecognizer />
      </Image.GestureRecognizers>
    </Image>

  </Grid>
</Frame>

而且,你可能会发现我对右边的手机图标一无所知。我想让它占据中心位置,并且是一个像样的按钮大小的卡片单元


我花了好几个小时想弄明白。我做错了什么?

Frame
的默认填充值为20。这就是为什么在框架内有这些边距

<Frame Padding="0" // Here , set padding to 0, so you can fill all Frame space
    CornerRadius="10"  
    Margin="10, 5"
    IsClippedToBounds="True"   
    BackgroundColor="White">


Bruno-感谢您的快速回复。我不知道关于一个框架,我应该有吗?它修复了图像顶部的空间,但我仍然无法达到我想要的效果。底部仍有一个空间,图像未跨越所有行。也许我的行的自动高度有问题吗?嗨,布鲁诺,正如我所怀疑的,将所有行设置为“*”而不是自动解决了我的问题。图像现在占据了所有的行。是的,我忘记添加了。如果将行设置为“*”,它们将占用可用空间。我的UI技巧是在网格、堆栈布局等元素中设置背景色(用于调试),以查看它们占用的空间。这样更容易。我应该补充一点,在我的图像旁边的其他单元格上使用自动和“*”行和列定义时,仍然会导致问题。最后,我用另一个2列网格包装了我现有的网格。第一列保存了我不变的图像,第二列保存了包装的网格。