Согласно вашему описанию, вы хотите щелкнуть изображение элемента Collectionview, чтобы добавить изображение, но сделать так, чтобы изображение загрузки всегда оставалось на последнем элементе, я прав?
Если да, я делаю один пример, который Вы можете посмотреть:
<CollectionView ItemsSource="{Binding ItemImages}" SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Vertical" Span="4" />
</CollectionView.ItemsLayout>
<CollectionView.EmptyView>
<StackLayout>
<Image
Aspect="AspectFill"
HeightRequest="150"
Source="image3.png"
WidthRequest="150" />
</StackLayout>
</CollectionView.EmptyView>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Image Margin="5" Source="{Binding .}">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped" />
</Image.GestureRecognizers>
</Image>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Добавление GestureRecognizer для управления изображением, а затем определить, был ли нажат последний объект изображения.
public partial class Page6 : ContentPage
{
public ObservableCollection<ImageSource> ItemImages { get; set; }
public Page6()
{
InitializeComponent();
ItemImages = new ObservableCollection<ImageSource>()
{
"a5.jpg","a6.jpg","a7.jpg","a8.jpg","a9.jpg","upload2.jpg"
};
this.BindingContext = this;
}
private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
Image image = (Image)sender;
if (getimagesource(image.Source)!=null && getimagesource(image.Source) == "upload2.jpg")
{
int count = ItemImages.Count;
ItemImages.Insert(count - 1, "a11.jpg");
}
}
private string getimagesource(ImageSource img)
{
string path;
if (img is Xamarin.Forms.FileImageSource)
{
Xamarin.Forms.FileImageSource objFileImageSource = (Xamarin.Forms.FileImageSource)img;
//
// Access the file that was specified:-
path = objFileImageSource.File;
return path;
}
return null;
}
}
Снимок экрана: