Xamarin.forms 单击CollectionView中的手势识别器

Xamarin.forms 单击CollectionView中的手势识别器,xamarin.forms,xamarin.ios,Xamarin.forms,Xamarin.ios,我创建了一个collectionview,并在该控件内创建了一个带有TapGestureRecognitor的网格,但在iOS上,该命令未被激发。。。它在android上运行良好。 第二个问题是,这个网格内的按钮也不起作用。。(在android上,一切正常。 这是控件: <CollectionView ItemsSource="{Binding Claims}" SelectionMode="None" Sel

我创建了一个collectionview,并在该控件内创建了一个带有TapGestureRecognitor的网格,但在iOS上,该命令未被激发。。。它在android上运行良好。 第二个问题是,这个网格内的按钮也不起作用。。(在android上,一切正常。 这是控件:

<CollectionView ItemsSource="{Binding Claims}"
                    SelectionMode="None"
                    SelectedItem="{Binding SelectedClaim}">
        <CollectionView.ItemsLayout>
            <LinearItemsLayout ItemSpacing="5"
                               Orientation="Vertical"/>
        </CollectionView.ItemsLayout>
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Frame Padding="0"
                       InputTransparent="True"
                       Margin="0">
                    <Frame Margin="10,5"
                           Padding="5"
                           InputTransparent="True"
                           CornerRadius="10"
                           HeightRequest="160"
                           HasShadow="True"
                           BorderColor="Gray"
                           Visual="Default">

                        <Grid VerticalOptions="Center">
                            <d:Grid.BindingContext>
                                <models:Claim/>
                            </d:Grid.BindingContext>

                            <Grid.GestureRecognizers>
                                <TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:ClaimsOverViewViewModel}}, Path=ViewCardCommand}"
                                                      CommandParameter="{Binding}"/>
                            </Grid.GestureRecognizers>


                            <Grid.RowDefinitions>
                                <RowDefinition Height="75"/>
                                <RowDefinition Height="4"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>

                            <StackLayout Grid.Row="0"
                                         InputTransparent="True"
                                         Grid.Column="0"
                                         Grid.ColumnSpan="2">

                                <StackLayout.GestureRecognizers>
                                    <TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:ClaimsOverViewViewModel}}, Path=ViewCardCommand}"
                                                          CommandParameter="{Binding}"/>
                                </StackLayout.GestureRecognizers>

                                <Label Text="Entwurf"
                                       TextColor="Red"
                                       FontSize="Medium"
                                       Margin="0,-20,0,0"
                                       IsVisible="{Binding IsNotValid}"
                                       HorizontalTextAlignment="Start"
                                       VerticalTextAlignment="Start"/>

                                <Label Text="{Binding PolicyNumber}"
                                       FontAttributes="Bold"
                                       FontSize="Large"
                                       VerticalTextAlignment="Start"
                                       HorizontalTextAlignment="Start"/>

                                <Label Text="{Binding CustomerName}"
                                       FontSize="Small"
                                       VerticalTextAlignment="End"
                                       HorizontalTextAlignment="Start"/>

                            </StackLayout>

                            <BoxView Grid.Row="1"
                                     Grid.Column="0"
                                     Grid.ColumnSpan="2"
                                     BackgroundColor="Gray"
                                     InputTransparent="True"
                                     HeightRequest="2"
                                     HorizontalOptions="Fill"/>

                            <Label Grid.Row="2"
                                   Grid.Column="0"
                                   Grid.ColumnSpan="2"
                                   Text="{Binding Date}"
                                   VerticalTextAlignment="Start"
                                   VerticalOptions="Fill"
                                   HorizontalOptions="Fill"/>

                            <StackLayout Grid.Column="1"
                                         InputTransparent="True">

                                <Button Text="Löschen"
                                        Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:ClaimsOverViewViewModel}}, Path=DeleteCommand}"
                                        CommandParameter="{Binding}"
                                        BorderColor="Red"
                                        CornerRadius="10"
                                        VerticalOptions="Center"
                                        BorderWidth="3"
                                        BackgroundColor="White"
                                        WidthRequest="80"
                                        HeightRequest="30"
                                        Padding="0"
                                        Margin="0,-10,0,10"
                                        HorizontalOptions="End"/>

                                <Button Text="Senden"
                                        Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:ClaimsOverViewViewModel}}, Path=SendClaimCommand}"
                                        CommandParameter="{Binding}"
                                        BorderColor="Green"
                                        CornerRadius="10"
                                        VerticalOptions="Center"
                                        BorderWidth="3"
                                        BackgroundColor="White"
                                        WidthRequest="80"
                                        HeightRequest="30"
                                        Padding="0"
                                        Margin="0"
                                        HorizontalOptions="End"/>
                            </StackLayout>

                        </Grid>
                    </Frame>

                </Frame>
            </DataTemplate>
        </CollectionView.ItemTemplate>

    </CollectionView>

我已经在不同的地方(stacklayout、grid、frame)尝试了tap识别器,还尝试了IpnutTransparent属性…

我找到了解决方案。 问题是,网格或Stacklayout中的元素隐藏了Stacklayout/Grid的GestureRecognitor。此问题的解决方案是,禁用属性为“InputTransparent”的子元素的GestureRecognitor,如下所示:

<StackLayout Grid.Row="0"
                                         Grid.Column="0"
                                         Grid.ColumnSpan="2">
                                <StackLayout.GestureRecognizers>
                                    <TapGestureRecognizer NumberOfTapsRequired="2"
                                                              Command="{Binding Source={RelativeSource AncestorType={x:Type
                                    viewmodels:ClaimsOverViewViewModel}}, Path=ShowDetailsCommand}"
                                                              CommandParameter="{Binding}"
                                                              />
                                </StackLayout.GestureRecognizers>

                                <Label Text="Entwurf"
                                       TextColor="Red"
                                       FontSize="Medium"
                                       Margin="0,-20,0,0"
                                       IsVisible="{Binding IsNotValid}"
                                       HorizontalTextAlignment="Start"
                                       VerticalTextAlignment="Start"
                                       InputTransparent="True"/>

                                <Label Text="{Binding PolicyNumber}"
                                       FontAttributes="Bold"
                                       FontSize="Large"
                                       VerticalTextAlignment="Start"
                                       HorizontalTextAlignment="Start"
                                       InputTransparent="True">
                                </Label>

                                <Label Text="{Binding CustomerName}"
                                       FontSize="Small"
                                       VerticalTextAlignment="End"
                                       HorizontalTextAlignment="Start"
                                       InputTransparent="True"/>

                            </StackLayout>


Hi,你是说所有产品都在安卓系统中工作,而不是在iOS系统中工作吗?是的,所有产品在安卓系统上都可以正常工作,但在iOS系统上活动不会被触发……好的,请确保您已将xamarin表单和visual studio更新到最新版本。我已安装最新的预览版本