1
リストビューコントロール内のフレームにTapGestureにコマンドをバインドしようとしています。フレームは、リストビューのデータテンプレート内で定義されます。 viewmodelクラスで定義されてコマンドバインディングがXamarinフォームのリストビュー内で機能しない
ここ<ListView x:Name="listView"
ItemsSource="{Binding LstSrc}"
RowHeight="75" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Margin="0"
Padding="0"
BackgroundColor="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Frame Grid.Column="0" BindingContext="{Binding Item1}"
Margin="0" Padding="0" x:Name="f1">
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding BindingContext.GoToPageCommand, Source={x:Reference this}}"
CommandParameter="{Binding BindingContext.Id, Source={x:Reference f1}}"/>
</Frame.GestureRecognizers>
</Frame>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
LstSrcとGoToPageCommand AE。 Item1はLstSrc内で定義されています。ビューモデルの中で定義され
委任コマンドは
public DelegateCommand<TappedEventArgs> GoToPageCommand => new DelegateCommand<TappedEventArgs>(
async s => {
await _navigationService.NavigateAsync("NextPage");
});
である。しかし、タッピングに、制御コマンド方式に来ていません。
バインディングにBindingContextを指定する必要はありません。デバッグ出力ウィンドウを見ると、おそらくバインディングエラーが発生します。バインディングパスのBindingContextを使わずにGoToPageCommandにバインドしてみてください。 –