我如何在Xamarin.Forms中访问以编程方式创建的UI元素:时间选择器

问题描述 投票:0回答:2

我有一种方法可以通过编程方式创建UI元素。示例:

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?

谢谢你!

xaml xamarin xamarin.forms access uielement
2个回答
0
投票
var timepickers = stacklayout1.Children.Where(child => child is TimePicker);

将返回添加到StackLayout的所有时间选择器的IEnumerable。您还必须在页面顶部将using System.Linq添加到您的用法中。


0
投票

一些建议:

使用ID

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

使用索引

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

使用标签

为标签创建自定义属性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)
  {

  }
}

顺便说一句,如果您在xaml中创建标签,则可以使用findbyname

Label label = stacklayout1.FindByName("labelA") as Label;
© www.soinside.com 2019 - 2024. All rights reserved.