ListView ContextActions和TapGestureRecognizer

时间:2017-03-19 08:27:33

标签: xamarin xamarin.forms

如何正确地组合ListView ContextActions和处理元素选择?我试过这个,但上下文菜单在android中不起作用。

<ListView 
x:Name="WorkoutsListView" 
HasUnevenRows="True"
ItemsSource="{Binding Workouts}">
<!--SelectedItem="{Binding SelectedWorkout, Mode=TwoWay}"-->
<ListView.ItemTemplate>
    <DataTemplate>
        <ViewCell>
            <ViewCell.ContextActions>
                <MenuItem Command="{Binding Path=BindingContext.DeleteWorkoutCommand, Source={x:Reference ContentPage}}"
                CommandParameter="{Binding .}"
                Text="Delete"
                IsDestructive="True"/>
            </ViewCell.ContextActions>
            <Grid>
                <Grid.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding Path=BindingContext.NavigateWorkoutCommand, Source={x:Reference ContentPage}}" CommandParameter="{Binding .}"></TapGestureRecognizer>
                </Grid.GestureRecognizers>
                <Label VerticalOptions="Center"
            Margin="15,12,10,12"
            Text="{Binding Name}"/>
            </Grid>
        </ViewCell>
    </DataTemplate>
</ListView.ItemTemplate>

1 个答案:

答案 0 :(得分:1)

我相信你会有更好的运气将行为附加到ListView而不是Grid。随意使用以下内容。您可能会注意到它使用var而不是BehaviorBase<T>。那是因为我使用Prism BehaviorBase。如果您选择使用Prism,则还可以使用内置的EventToCommandBehavior。当然,您可以自己实现此功能。您可以从Xamarin here找到样本。

Behavior<T>