Xamarin Forms CollectionView 点击手势或选择已更改不起作用

Sam*_*mes 0 c# xamarin.android xamarin xamarin.forms

Xamarin.Forms 我的问题至少存在于 Android 上。

我有一个使用分组的集合视图。我想让每个 CollectionView 组都可单击。我尝试将 tapGesture 识别器添加到第二个数据模板中的 StackLayout、顶部数据模板中的 Label 和 CollectionView 本身,我还尝试将它们作为点击和命令添加。最后,我在 collectionView 上尝试了 SelectionChanged 。

单击 CollectionView 上的任意位置不会命中 ViewModel 或 View.cs 中的断点

我希望单击一个项目将为 ViewModel 提供某种参数,以便它知道 CollectionView 中的哪个项目被点击

这是我的 XAML,如果有人能看到我犯了什么错误,那就太棒了!谢谢

<CollectionView Grid.Row="1"  ItemsSource="{Binding ResponseCollection}" SelectionMode="Single" SelectionChanged="ResponseCollectionView_SelectionChanged" x:Name="ResponseCollectionView" IsGrouped="True" >

                <CollectionView.GroupHeaderTemplate>
                    <DataTemplate >
                        <Label BackgroundColor="White" Padding="10,10,10,0" Text="{Binding Response}">
                        </Label>

                    </DataTemplate>
                </CollectionView.GroupHeaderTemplate>

                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <ScrollView>
                            <Grid Padding="10" BackgroundColor="White">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="1"/>
                                </Grid.RowDefinitions>

                                <StackLayout Grid.Row="0" Orientation="Horizontal">

                                    <Label TextColor="Red" Text="{Binding Statistic}"/>
                                    <Label TextColor="Red" Text="{Binding Amount}"/>
                                </StackLayout>
                                
                                <BoxView Grid.Row="1" BackgroundColor="Gray" HorizontalOptions="FillAndExpand"></BoxView>
                            </Grid>
                        </ScrollView>
                    </DataTemplate>
                </CollectionView.ItemTemplate>

            </CollectionView>
Run Code Online (Sandbox Code Playgroud)

Sha*_*haw 5

使用相对绑定

  1. 添加容器(或内容页)的名称
  2. 对点击命令绑定使用相对绑定
<StackLayout x:Name="PageView">
    <CollectionView>
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <StackLayout>
                    <StackLayout.GestureRecognizers>
                        <TapGestureRecognizer Command="{Binding Path=BindingContext.ViewModelCommand, Source={x:Reference PageView}}" />
                    </StackLayout.GestureRecognizers>
                </StackLayout>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)

更新为包含参数:

<TapGestureRecognizer
    Command="{Binding Path=BindingContext.ViewModelCommand, Source={x:Reference PageView}}"
    CommandParameter="{Binding .}"/>
Run Code Online (Sandbox Code Playgroud)