Xamarin Forms - 在点击手势识别器上添加调用对象作为参数

Posted

技术标签:

【中文标题】Xamarin Forms - 在点击手势识别器上添加调用对象作为参数【英文标题】:Xamarin Forms - adding the calling object as a parameter on a tap gesture recognizer 【发布时间】:2018-11-12 15:15:50 【问题描述】:

在下面的 XAML 中添加图像作为命令参数的正确语法是什么?

<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>

以及它绑定的命令代码(CustomCachedImage 只是一个从缓存图像派生的类,添加了一个 imageName 字段)

调用图像将有​​多个实例,因为它在数据模板中作为图像滑块的一部分,所以我不能只按名称获取控件,我必须确保它是正在传递的调用控件。

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

【问题讨论】:

请显示您绑定的对象 谢谢,已更新 请发布所有相关代码 :-) SetImg 是做什么的,smallImage 来自哪里? 有一个较大的主图像,点击手势识别器调用 SetImg 将图像设置为与用户点击的滑块中的较小图像相同的源。其他一切正常我似乎无法将点击的图像作为参数传递给命令。 应该提到,图像源可以捆绑在应用程序中或保存在本地存储中,因此自定义 cahcedImage。如果我可以传递图像,我可以获取图像名称并轻松完成剩下的工作。 【参考方案1】:

将“Binding smallImage”更改为“Binding .”,我得到了我需要的东西

【讨论】:

以上是关于Xamarin Forms - 在点击手势识别器上添加调用对象作为参数的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms 警告:尝试使用 iOS 图像/手势识别器在其视图不在窗口层次结构中的 * 上呈现 *

如何在 Xamarin.Forms 的主页上禁用主页点击手势而不是其他页面?

Xamarin.Forms 滑动手势识别器

使用后台代码触发时,Xamarin.forms 将变量传递给点击手势

张高兴的 Xamarin.Forms 开发笔记:TapGestureRecognizer 的简单介绍与应用

ScrollView 问题中的 Xamarin.Forms 捏手势