Search code examples
xamarinspacingcollectionview

Xamarin - CollectionView VerticalItemSpacing not working


I am clueless what might be wrong, I've tested several code variants and none of them worked. I've also tried variant with Frame and StackLayout.

<ScrollView VerticalOptions="StartAndExpand" Orientation="Vertical">
    <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <CollectionView Grid.Row="0" x:Name="StockCards_CollectionView" ItemsSource="{Binding lc_ReleaseBill.Items}" SelectionChangedCommand="{Binding OnCollectionViewSelectionChanged}" EmptyView="List is empty." SelectionMode="Single"  SelectedItem="{Binding SelectedStockCard, Mode=TwoWay}">
            <CollectionView.ItemsLayout>
                <GridItemsLayout Orientation="Vertical"  VerticalItemSpacing="20"/>
            </CollectionView.ItemsLayout>
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                            <Label Grid.Row="0" Grid.Column="0"  Text="{Binding Name}" FontAttributes="Bold" VerticalOptions="Start" TextColor="White"/>

                            <Label Grid.Row="1" Grid.Column="0"  Text="{Binding Unit}" FontAttributes="Italic"  VerticalOptions="Start" TextColor="White"/>

                            <Label Grid.Row="0" Grid.Column="1"  Text="{Binding Price_WithVAT_Unit}" FontAttributes="Bold"  HorizontalOptions="End" FontSize="19" TextColor="#00c8df"/>

                            <Label Grid.Row="1" Grid.Column="1"  Text="{Binding Amount}" FontAttributes="Bold"  HorizontalOptions="End" TextColor="White"/>
                    </Grid>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
    </Grid>
</ScrollView> 

Running on Xamarin.Forms 4.5.0.356 and the same result was on 4.4.0.991640.


Solution

  • I fixed it by setting Collection View Item Spacing from code, which is not ideal but its better than setting margin on Grid inside of Collection View.

    CollectionView.ItemsLayout = new LinearItemsLayout(ItemsLayoutOrientation.Vertical)
        {
           ItemSpacing = 20
        };