Событие Tap не запускает команду в Android - PullRequest
0 голосов
/ 23 мая 2019

У меня есть шаблон списка в формах xamarin следующим образом

<ListView 
x:Name="lstSections"
Grid.Row="0"
Grid.Column="1"
ItemsSource="{Binding DataList}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid Margin="0,0,0,10">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <input:CheckBox IsEnabled="False" HorizontalOptions="FillAndExpand" IsChecked="{Binding Selected}" Grid.Column="0"></input:CheckBox>
                    <StackLayout VerticalOptions="CenterAndExpand" Grid.Column="1">
                        <Label Text="{Binding Name}" VerticalOptions="Fill" HorizontalOptions="StartAndExpand">
                        </Label>
                        <!--<Label Text="{Binding Data.Description}" VerticalOptions="Fill" FontSize="10" HorizontalOptions="StartAndExpand" />-->
                    </StackLayout>
                    <Grid.GestureRecognizers>
                        <ClickGestureRecognizer Command="{Binding ShowSectionCommand}" CommandParameter="{Binding Id}" />
                        <TapGestureRecognizer Command="{Binding ShowSectionCommand}" CommandParameter="{Binding Id}" />
                    </Grid.GestureRecognizers>
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.Footer>
        <Button Text="Save" Command="{Binding FinishCommand}" />
    </ListView.Footer>
</ListView>

и я объявил команду следующим образом:

public ICommand ShowSectionCommand
    {
        get
        {
            return new AsyncCommand(async (val) => {
                await NavigationService.NavigateToAsync<InspectionFormViewModel>(val);
            });
        }
    }

Команда отлично работает в приложении uwp, но не работает в Android, Пожалуйста, предложите несколько советов, чтобы решить эту проблему.

1 Ответ

1 голос
/ 23 мая 2019

Это потому, что вы не связываете его в правильном контексте, GestureRecognizor в DataTemplate должно выглядеть примерно так:

 <Grid.GestureRecognizers>  
 <TapGestureRecognizer Command="{Binding BindingContext.ShowSectionCommand, Source={x:Reference lstSections}}" CommandParameter="{Binding Id}" />
 </Grid.GestureRecognizers>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...