为每个循环c#Xamarin调整标签中的多个文本
我有一个简单的for-each循环,它应该用列表中结果的字符串(result.naampartij)填充表单中的多个标签。现在我想使用为每个循环c#Xamarin调整标签中的多个文本,c#,android,xamarin,foreach,C#,Android,Xamarin,Foreach,我有一个简单的for-each循环,它应该用列表中结果的字符串(result.naampartij)填充表单中的多个标签。现在我想使用I来指示我要填充哪个标签,以便每个标签都有该结果的“naampartij”。像这样: int i = 0; foreach (var result in results) { i++; label[i].Text = result.naamp
I
来指示我要填充哪个标签,以便每个标签都有该结果的“naampartij”。像这样:
int i = 0;
foreach (var result in results)
{
i++;
label[i].Text = result.naampartij;
}
当我这样做时,visual studio会将
label[i]
注册为一个名称,而不是作为label1
label2
label3
等,随着循环的进行
例如:
PageView.xaml中的xaml:
<Label
x:Name="Geronimo"
HorizontalOptions="Center"
Text="Hello"
VerticalOptions="Center" />
及
及
因此,当在XAML中使用x:Name
时,将创建一个具有指定名称的成员变量的类(由两个分部类组成)。因此,如果您纯粹在C#中工作,等价的是您只需要有一个具有所需名称的成员变量。w
作为一种解决方法,您可以创建一个stacklayout来包装它
<StackLayout Orientation="Vertical" x:Name="layout">
</StackLayout>
并通过查找标签
Label label1 = (Label)layout.Children[0];
Label label2 = (Label)layout.Children[1];
...
现在还不清楚您想要实现什么,但是您是否可以使用for循环来代替foreach?C#不是这样工作的。您可以使用反射来实现这一点,但只构建一个列表或数组并引用要更新的标签要简单得多。
Geronimo = global::Xamarin.Forms.NameScopeExtensions.FindByName<global::Xamarin.Forms.Label>(this, "Geronimo");
Geronimo.Text = "Here we go";
<StackLayout Orientation="Vertical" x:Name="layout">
</StackLayout>
foreach (var result in results)
{
Label label = new Label();
label.Text = result.naampartij;
layout.Children.Add(label);
}
Label label1 = (Label)layout.Children[0];
Label label2 = (Label)layout.Children[1];
...