我有问题。我从一个名为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?
而不是使用click事件,应该使用Command
和CommandParameter
并使用父Collection的BindingContext