[Xamarin Forms Get Object element on image click

问题描述 投票:0回答:1

我有问题。我从一个名为List<Set> Sets的列表创建了一个CollectionView,在Set中有一个名为List<Picture> Pictures的列表。

这是类的外观:

public class Set
{
    public int Id { get; set; }
    public List<Picture> Pictures{ get; set; }
}

图片类如下所示:

public class Picture
{
    public int Id { get; set; }
    public string Name { get; set; }
}

现在在我的XAML中,我在每个图像上添加了一个click事件,因为我需要知道已单击了哪个图像。问题是我还需要知道单击图像的哪个集合,因为一个图像可以位于多个集合中。

这里是XAML:

<CollectionView ItemsSource="{Binding Sets}">
    <CollectionView.ItemsLayout>
        <GridItemsLayout Orientation="Vertical" />
    </CollectionView.ItemsLayout>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <ScrollView Orientation="Horizontal">
                <StackLayout BindableLayout.ItemsSource="{Binding Pictures}" Orientation="Horizontal">
                    <BindableLayout.ItemTemplate>
                        <DataTemplate>
                            <ff:CachedImage Aspect="AspectFill" Source="{Binding imageSource}">
                                <ff:CachedImage.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="AlbumFoto_Clicked" />
                                </ff:CachedImage.GestureRecognizers>
                            </ff:CachedImage>
                        </DataTemplate>
                    </BindableLayout.ItemTemplate>
                </StackLayout>
            </ScrollView>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

现在我已经有了此代码:

private void AlbumFoto_Clicked(object sender, EventArgs e)
{
    CachedImage image = (CachedImage)sender;
    var setPicture = image.Source.BindingContext as Picture;
    var ImageId = setPicture.Id;

    var Pictureindex = 0;
    foreach (var set in Sets.Where(set => Pictures.Picture.Any(p => p.Id == ImageId)))
    {
        Pictureindex = set.Pictures.Picture.FindIndex(p => p.Id == ImageId);
    }
}

现在如何从点击的图像集中获取ID?

c# xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

而不是使用click事件,应该使用CommandCommandParameter并使用父Collection的BindingContext

© www.soinside.com 2019 - 2024. All rights reserved.