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