C# 将TapGestureRecognitor添加到Xaml网格-不起作用?

C# 将TapGestureRecognitor添加到Xaml网格-不起作用?,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,Xamarin Forms 2.5 我有一个带有自定义GroupHeaderTemplate的ListView,可以很好地渲染: <ListView.GroupHeaderTemplate> <DataTemplate> <ViewCell> <templates:SummaryCellHeader /> </ViewCell> </DataTemplate&

Xamarin Forms 2.5

我有一个带有自定义GroupHeaderTemplate的ListView,可以很好地渲染:

<ListView.GroupHeaderTemplate>
    <DataTemplate>
        <ViewCell>
            <templates:SummaryCellHeader />
        </ViewCell>
    </DataTemplate>
</ListView.GroupHeaderTemplate>
TapGestureRecognitor从不开火。如果在ListViewHeader外部使用此模板,则此模板有效


ListView GroupHeaderTemplate中是否允许使用TapGestureRecognitors?

问题在于标题的绑定上下文是列表显示的数据,而不是视图模型

为列表视图指定一个名称,然后使用该名称更改命令的绑定上下文源

<ListView ItemsSource="{Binding ListOfPeople}"
          IsGroupingEnabled="true"
          x:Name="PersonList">

<Grid.GestureRecognizers>
    <TapGestureRecognizer Command="{Binding Source={x:Reference PersonList}, BindingContext.ListHeaderTappedCommand}" />
</Grid.GestureRecognizers>

谢谢史蒂夫·查德伯恩。如果键是一个复杂对象而不是一个简单字符串,那么您也可以在该键上放置一个命令:

<Grid RowSpacing="0"  >
    <Grid.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding Key.ListHeaderTappedCommand}" />
    </Grid.GestureRecognizers>
这样做的好处是,您可以获得用于创建列表的头POCO的引用。这有助于确定在HeaderClick上要采取的操作

<Grid RowSpacing="0"  >
    <Grid.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding Key.ListHeaderTappedCommand}" />
    </Grid.GestureRecognizers>