Der Befehl wird nicht von meinem Ansichtsmodell ausgelöst [XAMARIN FORMS]

Der Befehl wird nicht von meinem Ansichtsmodell ausgelöst [XAMARIN FORMS]

Lösung für Befehl wird nicht von meinem Ansichtsmodell ausgelöst [XAMARIN FORMS]
ist unten angegeben:

Ich habe einen <ListView> der seine eigene Vorlage wie diese hat

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

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

Also <templates:TourCell> ist eine weitere Seite mit eigenem Ansichtsmodell

<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>

Ich möchte GoToNext auslösen Befehl, aber es ist nichts passiert

Mein viewModel-Befehl

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

Ich habe 2 Ansichtsmodelle, das erste für <Label> , <ListView> und die zweite für <DataTemplate> aber ich kann den Befehl im zweiten nicht auslösen.

Ich habe Ihren vollständigen Code nicht gesehen, deshalb ist hier ein einfaches Beispiel, auf das Sie sich beziehen können.

in der page.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;
    }
}

in Ihrer page.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>

dann in Ihrer 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();

    }
}