Как получить доступ к программно созданным элементам пользовательского интерфейса в Xamarin.Forms: timepicker - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть метод, который создает элемент интерфейса программно. Пример:

Label label1 = new Label(); 
label1.Text = "Testlabel";

TimePicker timepicker1 = new TimePicker();
timepicker1.Time = new TimeSpan(07, 00, 00);

После этого я добавляю их обоих в уже существующий StackLayout.

stacklayout1.Children.Add(label1);
stacklayout1.Children.Add(timepicker1);

Пользователь моего приложения может создать это несколько раз. Теперь мой вопрос: как я могу получить доступ, например, ко второму / лучшему из всех созданных TimePickers?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Некоторые предложения:

Использование ID :

var id = label1.Id;
var text = (stacklayout1.Children.Where(x => x.Id == id).FirstOrDefault() as myLabel).Text;

Использование index :

Label labelOne = stacklayout1.Children[0] as Label;

Использование tag :

Создать собственное свойство tag для метки:

public class myLabel : Label{ 

    public int tag { get; set; }
}

И найти метку по тегу:

var labels = stacklayout1.Children.Where(x => x is myLabel).ToList();

foreach (myLabel childLabel in labels)
{
  if (childLabel.tag == 0)
  {

  }
}

BTW , если вы создаете метку в xaml , вы можете использовать findbyname:

Label label = stacklayout1.FindByName("labelA") as Label;
0 голосов
/ 27 февраля 2020
var timepickers = stacklayout1.Children.Where(child => child is TimePicker);

Возвращает IEnumerable из всех указателей времени, добавленных в ваш StackLayout. Вам также необходимо добавить использование System.Linq к вашим значениям вверху страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...