C# 将TapGestureRecognitor添加到Xaml网格-不起作用?
Xamarin Forms 2.5 我有一个带有自定义GroupHeaderTemplate的ListView,可以很好地渲染: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&
<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>