首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xamarin形成动态图像触觉识别器控件

xamarin形成动态图像触觉识别器控件
EN

Stack Overflow用户
提问于 2018-05-17 00:26:56
回答 1查看 284关注 0票数 1

如何通过单击xamarin窗体来控制(更改)在xamarin窗体中创建的动态映像?

代码语言:javascript
复制
Image ggImage = new Image()
ggImage.Source = otoTip.imagex
ggImage.AutomationId = "seat_" +otoTip.num
ggImage.WidthRequest = imageWidth
ggImage.HeightRequest = 50
ggImage.VerticalOptions = LayoutOptions.Start
ggImage.HorizontalOptions = LayoutOptions.Start
ggImage.GestureRecognizers.Add(tapGestureRecognizer)

例如,我只想更改简历来源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 06:54:21

您必须实现一个TapGestureRecognizer,然后将它添加到您的映像中.

代码语言:javascript
复制
Image ggImage = new Image();
ggImage.Source = otoTip.imagex
ggImage.AutomationId = "seat_" +otoTip.num
ggImage.WidthRequest = imageWidth        
ggImage.HeightRequest = 50;
ggImage.VerticalOptions = LayoutOptions.Start;
ggImage.HorizontalOptions = LayoutOptions.Start;

// your TapGestureRecognizer implementation, this is just a sample...
var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => { ggImage.Source = yourNewSource };
ggImage.GestureRecognizers.Add(tapGestureRecognizer);

为了更改动态创建的映像的每个唯一映像,可以扩展OtoTip类和

代码语言:javascript
复制
public class OtoTip : INotifyPropertyChanged
{
    public int x { get; set; }
    public int y { get; set; }
    public int num { get; set; }
    public int near { get; set; }
    public int status { get; set; }

    public int yy { get; set; }
    public int xx { get; set; }


    // xx
    private string _imagex;
    public string imagex
    {
        get { return _imagex; }
        set
        {
            _imagex = value;
            OnPropertyChanged(nameof(imagex));
        }
    }

    private string _imageActivex;
    public string imageActivex
    {
        get { return _imageActivex; }
        set
        {
            _imageActivex = value;
            OnPropertyChanged(nameof(imageActivex));
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

现在你必须扩展你的getVoyagesData(),也可以像你的标准图像一样设置imageActivex

现在您必须调整TapGestureRecognizer以使用新属性

代码语言:javascript
复制
tapGestureRecognizer.Tapped += (s, e) => 
{ 
    if(ggImage.Source = otoTip.imagex) {
        ggImage.Source = otoTip.imageActivex;
    } 
    else 
    { 
        ggImage.Source = otoTip.imagex;
    }
};

这个有用吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50381713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档