2017-12-12 10 views
0

Xamarinは私がきれいにレンダリングするカスタムGroupHeaderTemplateListViewを持っている2.5XamlグリッドにTapGestureRecognizerを追加する - 機能しませんか?

フォーム:

<ListView.GroupHeaderTemplate> 
    <DataTemplate> 
     <ViewCell> 
      <templates:SummaryCellHeader /> 
     </ViewCell> 
    </DataTemplate> 
</ListView.GroupHeaderTemplate> 

GroupHeaderTemplateTapGestureRecognizerGridを持っています。

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

TapGestureRecognizerは発生しません。このテンプレートは、ListViewHeader以外で使用すると機能します。

TapGestureRecognizersはリストビューで許可されていますGroupHeaderTemplate

答えて

1

問題は、ヘッダのバインディングコンテキストが、リストが表示しているデータであり、ビューモデルではありません。

リストビューに名前を付け、それを使用してコマンドのバインディングコンテキストソースを変更します。

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

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

ありがとうSteve Chadbourne

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

利点は、あなたがリストを作成するヘッダーPOCOへの参照を使用してしまうことがあります:キーは、複雑なオブジェクトではなく、単純な文字列である場合は、キーにコマンドを置くことができそうです。これは、取るべき行動を決定するのに役立ちます。

関連する問題