I've sorted it. I was pushing through a url and expecting a Video object...
Xamarin Forms: DataTemplate Command Binding not working
I have the following carousel view on my Xamarin Forms page (named page)
<CarouselView x:Name="carousel"
ItemsSource="{Binding Videos}"
HeightRequest="215">
<CarouselView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Image
HorizontalOptions="CenterAndExpand"
VerticalOptions="CenterAndExpand"
HeightRequest="200"
CacheDuration="7"
CacheType="Disk"
DownsampleToViewSize="True"
Source="{Binding ThumbnailUrl}">
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding BindingContext.PlayVideoCommand, Source={x:Reference page}}" CommandParameter="{Binding VideoUrl}"/>
</Image.GestureRecognizers>
</Image>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
and my command:
public ICommand PlayVideoCommand => new Command<Video>(async (x) =>
{
//
});
However, my command on my viewmodel is never fired when I tap the image