Xamarin Forms 2.5
我有一个ListView
,其自定义GroupHeaderTemplate
可以很好地呈现:
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<templates:SummaryCellHeader />
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
GroupHeaderTemplate
有一个Grid
,TapGestureRecognizer
。
<Grid>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ListHeaderTappedCommand}" />
</Grid.GestureRecognizers>
</Grid>
TapGestureRecognizer
永远不会开火。如果在ListViewHeader
之外使用,则此模板有效。
ListView TapGestureRecognizers
中是否允许GroupHeaderTemplate
?
答案 0 :(得分:1)
问题是标题的绑定上下文是列表显示的数据,而不是视图模型。
为列表视图指定一个名称,然后使用该名称更改命令的绑定上下文源。
<ListView ItemsSource="{Binding ListOfPeople}"
IsGroupingEnabled="true"
x:Name="PersonList">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={x:Reference PersonList}, BindingContext.ListHeaderTappedCommand}" />
</Grid.GestureRecognizers>
答案 1 :(得分:0)
谢谢Steve Chadbourne。似乎如果Key是一个复杂的对象而不是一个简单的字符串,你也可以在Key上放置一个Command:
<Grid RowSpacing="0" >
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Key.ListHeaderTappedCommand}" />
</Grid.GestureRecognizers>
好处是您可以获得用于创建列表的Header POCO的引用。这有助于确定要对HeaderClick采取的操作