Xamarin Forms tapgesturerecogizer阻止实际的点击



我在collectionview中有stacklayout,我想点击stacklayout元素来执行绑定命令。当我添加TapGestureRecognizer到stacklayout - stacklayout停止响应触摸(我仍然可以滚动它)和绑定命令不触发:

<CollectionView ItemsSource="{Binding ResponseResponses}" SelectionMode="Single" >
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding SearchCommand}" NumberOfTapsRequired="1"/>
</StackLayout.GestureRecognizers>
<Label Text="{Binding Username, StringFormat=User: {0}}" />
<Label Text="{Binding FileCount, StringFormat=Files: {0}}" />
<BoxView   HeightRequest="1"
BackgroundColor="LightGray"
VerticalOptions="End"/>      
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>

所以没有GestureRecognizers——在stacklayout元素上的选择可以工作,有了gesturerecognizer——就不行。如果我将gesturerecognizer添加到标签(例如),那么触摸就会在该标签上受阻。

Btw {Binding SearchCommand}是自己工作的,它被绑定到视图中的其他按钮,所以可能没有原因。

那么,我这里做错了什么?

所以,正如我在这里发现的:CollectionView提示

请记住,当在ItemTemplate中工作时,BindingContext是项目本身,而不是ContentPage的。如果您的命令在项目上存在,那么您就万事俱备了。但是,如果你希望将这个绑定路由到ContentPage视图模型上的命令,就像这个例子中一样,你可以使用新支持的RelativeSource。

所以你必须使用这样的绑定:

<CollectionView.ItemTemplate>
<DataTemplate>
<views:ResultViewA>
<views:ResultViewA.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding 
Source={RelativeSource 
AncestorType={x:Type vm:FlightResultsViewModel}}, 
Path=GoToDetailsCommand}"
CommandParameter="{Binding .}"/>
</views:ResultViewA.GestureRecognizers>
</views:ResultViewA>
</DataTemplate>
</CollectionView.ItemTemplate>

在我的例子中,它现在看起来像这样:

<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding 
Source={RelativeSource 
AncestorType={x:Type viewmodels:SearchViewModel}}, 
Path=SearchCommand}"
CommandParameter="{Binding .}"/>
</StackLayout.GestureRecognizers>
<Label Text="{Binding Username, StringFormat=User: {0}}"/>
<Label Text="{Binding FileCount, StringFormat=Files: {0}}"/>
<BoxView   HeightRequest="1"
BackgroundColor="LightGray"
VerticalOptions="End" InputTransparent="True"/>

相关内容

  • 没有找到相关文章

最新更新