xamarin формирует динамическое управление распознавателем изображения - PullRequest
0 голосов
/ 17 мая 2018

Как я могу обеспечить контроль (изменение) моих динамических изображений, созданных в формах xamarin, нажав?

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)

Например, я просто хочу изменить источник резюме.

1 Ответ

0 голосов
/ 17 мая 2018

Вы должны реализовать TapGestureRecognizer, а затем добавить его к своему изображению ...

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 и

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 для использования нового свойства

tapGestureRecognizer.Tapped += (s, e) => 
{ 
    if(ggImage.Source = otoTip.imagex) {
        ggImage.Source = otoTip.imageActivex;
    } 
    else 
    { 
        ggImage.Source = otoTip.imagex;
    }
};

Помогает ли это?

...