Вы можете попробовать добавить Margin к контенту DataTemplate внутри ContentView
<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"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<ContentView>
<Grid Margin="0,0,0,20">
...
</Grid>
<(ContentView>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Кроме того, вы должны попробовать использовать ItemSpacing="20"
вместо VerticalItemSpacing
Редактировать: так как ItemSpacing делает работать, но только после того, как в нем будет еще несколько элементов, достаточных для прокрутки назад и вперед, я бы попробовал эту технику:
Установите для свойства IsVisible
значение false, а после того, как в вашей Коллекции есть данные, установите ее в true:
<CollectionView IsVisible="{Binding CollectionHasData}" 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}">
private bool _collectionHasData;
public bool CollectionHasData
{
get => _item;
set { _collectionHasData = value; }
}
...
lc_ReleaseBill.Items = Data;
CollectionHasData = true;
Я не знаю, как вы выбираете ваши данные, если вы их устанавливаете или объект уже имеет данные, но дело в том, когда ваши Предметы имеют некоторые значения, установите bool в true