Il comando non viene attivato dal mio modello di visualizzazione [XAMARIN FORMS]

Il comando non viene attivato dal mio modello di visualizzazione [XAMARIN FORMS]

La soluzione per Command non viene attivata dal mio modello di visualizzazione [XAMARIN FORMS]
è riportato di seguito:

Ho un <ListView> che ha il suo modello come questo

<Label IsVisible="{Binding LabelNbToursIsVisible}"
       Text="{Binding LabelNbToursText}"
       Margin="0" />

<ListView ItemsSource="{Binding ItemsSource}">
   <ListView.ItemTemplate>
      <DataTemplate>
         <templates:TourCell></templates:TourCell>
      </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

Quindi <templates:TourCell> è un'altra pagina con il suo modello di visualizzazione

<ViewCell xmlns="http://xamarin.com/schemas/2014/forms" 
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:Sv="clr-namespace:enVisite360.Controls"
         xmlns:helper="clr-namespace:enVisite360.Helper"
         xmlns:ff="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
         x:Class="enVisite360.Views.DataTemplates.TourCell"
         x:Name="tourCell">
   <Grid AbsoluteLayout.LayoutFlags="All"
         AbsoluteLayout.LayoutBounds="{OnPlatform Android='0.9,1,0.35,.3', iOS='.9,1,.35,.25'}"
         BackgroundColor="Red">
            
     <Grid.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding GoToNext}" />
     </Grid.GestureRecognizers>       
  </Grid>
</ViewCell>

Voglio attivare GoToNext comando ma non è successo nulla

Il mio comando viewModel

public Command GoToNext
    {
        get
        {
            return new Command(async () =>
            {
               await _page.DisplayAlert("test", "test", "OK");
            });
        }
    }

Ho 2 modelli di visualizzazione, il primo per <Label> , <ListView> e il secondo per il <DataTemplate> ma non riesco ad attivare il comando nel secondo.

Non ho visto il tuo codice completo, quindi ecco un semplice esempio a cui fare riferimento.

nella pagina.xaml.cs:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class YourPage: ContentPage
{
   public ViewCellViewModel viewCellViewModel { get; set; } //for your TourCell
   public PageViewModel pageViewModel { get; set; } //for your Label and Listview
    public YourPage()
    {
        InitializeComponent();
        viewCellViewModel = new ViewCellViewModel(this);
        pageViewModel = new PageViewModel (this);
        BindingContext = this;
    }
}

nella tua pagina.xaml:

<ContentPage 
          ...
         x:Name="page">
   <ContentPage.Content>
      <StackLayout>
          <Label IsVisible="{Binding pageViewModel.LabelNbToursIsVisible}" Text="{Binding pageViewModel.LabelNbToursText}"
   Margin="0" />

          <ListView ItemsSource="{Binding pageViewModel.ItemsSource}">
              <ListView.ItemTemplate>
                  <DataTemplate>
                    <templates:TourCell BindingContext="{Binding Source={x:Reference page},Path=BindingContext.viewCellViewModel}" ></templates:TourCell>
                  </DataTemplate>
              </ListView.ItemTemplate>
          </ListView>
      </StackLayout>
   </ContentPage.Content>
</ContentPage>

quindi nel tuo TourCell.xaml.cs :

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class TourCell : ViewCell
{
    public TourCell()
    {
        InitializeComponent();

    }
    protected override void OnBindingContextChanged()
    {

        var item = BindingContext as ViewCellViewModel;

        if (item == null)
            return;

        BindingContext = item;
        base.OnBindingContextChanged();

    }
}