如何在 Xamarin 中处理 FlexLayout 的触摸事件
How to handle touch event for a FlexLayout in Xamarin
所以我正在构建一个应该显示多个产品的应用程序,因为我想在一行中显示多个产品,我不能使用 ListView,所以我考虑使用 FlexLayout 作为 Bindable-布局并使用 ItemsSource 来显示我的产品列表,这是成功的。所以我想为 flexlayout 中显示的每个产品添加一个触摸事件,为此我创建了一个新的行为,这是我使用的代码的 link:
https://gist.github.com/jtaubensee/96a5e49c66a205e36ff32787f1d2114d
确实有效,因此我可以使用命令。我的问题是我想获得被点击的产品,但我不知道该怎么做?有没有人可以帮助我?
如果你不反对xaml,我就是这样处理的
<FlexLayout BindableLayout.ItemsSource="{Binding Abilities}" IsVisible="{Binding HasAbilities}" BindableLayout.ItemTemplate="{DataTemplate attitm:AttachedAbility}"
AlignItems="Center" Wrap="Wrap" JustifyContent="Center"/>
并且模板实现触摸手势,并将对象作为命令参数传递;
<ContentView.Content>
<StackLayout Padding="20,8" HorizontalOptions="Center">
<Frame BorderColor="{OnPlatform Android=DarkCyan, UWP=Accent}" Padding="4">
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding DrillIntoCommand}" CommandParameter="{Binding}"/>
</Frame.GestureRecognizers>
<StackLayout HorizontalOptions="Center" Orientation="Horizontal">
<Label x:Name="TitleLabel" Text="{Binding Title}" HorizontalOptions="Center" VerticalOptions="Center"/>
<Label Text="" FontFamily="{StaticResource FontAwesomeSolid}" IsVisible="{Binding IsUserCreated}" TextColor="Orange" HorizontalOptions="Center"/>
</StackLayout>
</Frame>
</StackLayout>
</ContentView.Content>
所以我正在构建一个应该显示多个产品的应用程序,因为我想在一行中显示多个产品,我不能使用 ListView,所以我考虑使用 FlexLayout 作为 Bindable-布局并使用 ItemsSource 来显示我的产品列表,这是成功的。所以我想为 flexlayout 中显示的每个产品添加一个触摸事件,为此我创建了一个新的行为,这是我使用的代码的 link:
https://gist.github.com/jtaubensee/96a5e49c66a205e36ff32787f1d2114d
确实有效,因此我可以使用命令。我的问题是我想获得被点击的产品,但我不知道该怎么做?有没有人可以帮助我?
如果你不反对xaml,我就是这样处理的
<FlexLayout BindableLayout.ItemsSource="{Binding Abilities}" IsVisible="{Binding HasAbilities}" BindableLayout.ItemTemplate="{DataTemplate attitm:AttachedAbility}"
AlignItems="Center" Wrap="Wrap" JustifyContent="Center"/>
并且模板实现触摸手势,并将对象作为命令参数传递;
<ContentView.Content>
<StackLayout Padding="20,8" HorizontalOptions="Center">
<Frame BorderColor="{OnPlatform Android=DarkCyan, UWP=Accent}" Padding="4">
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding DrillIntoCommand}" CommandParameter="{Binding}"/>
</Frame.GestureRecognizers>
<StackLayout HorizontalOptions="Center" Orientation="Horizontal">
<Label x:Name="TitleLabel" Text="{Binding Title}" HorizontalOptions="Center" VerticalOptions="Center"/>
<Label Text="" FontFamily="{StaticResource FontAwesomeSolid}" IsVisible="{Binding IsUserCreated}" TextColor="Orange" HorizontalOptions="Center"/>
</StackLayout>
</Frame>
</StackLayout>
</ContentView.Content>