Search code examples
xamlxamarin.formsgesture

Xamarin Forms - adding the calling object as a parameter on a tap gesture recognizer


What is the correct syntax for adding the image in the XAML below as the parameter on the Command?

<ffimageloading:CachedImage Source="{Binding Source}" Aspect="AspectFit" CacheType="Memory" Opacity="2" x:Name="smallImage" >
                            <Image.GestureRecognizers>
                                <TapGestureRecognizer 
                                    Command="{Binding Path=BindingContext.SetImageCommand, Source={x:Reference this}}"
                                    CommandParameter="{Binding smallImage}" />
                            </Image.GestureRecognizers>
                        </ffimageloading:CachedImage>

And the command code it's bound to (CustomCachedImage is just a class derived from a cached image, with an imageName field added)

There will be multiple instances of the calling image as it is in a data template as part of an image slider, so I can't just get the control by name I have to make sure it is the calling control being passed.

public ICommand SetImageCommand
        {
            get
            {
                 return new Command<CustomCachedImage>((_image) =>
                 {
                     string imgName = _image.ImageName;
                     SetImg(imgName);
                 });
             }
        }

Solution

  • changed "{Binding smallImage}" to "{Binding .}" and I got what I needed