Настройте несколько текстов из ярлыков для каждого l oop c# Xamarin - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть простой для каждого l oop, который должен заполнить несколько меток в моей форме каждой строкой из результата в этом списке (result.naampartij). Теперь я хотел бы использовать i, чтобы указать, какую метку я хочу заполнить, чтобы каждая метка имела «naampartij» этого результата. Вот так:

        int i = 0;

        foreach (var result in results)
        {            

            i++;
            label[i].Text = result.naampartij;

        }

Когда я это делаю, visual studio регистрирует label[i] как имя, а не как label1 label2 label3 et c, когда l oop продолжается .

1 Ответ

1 голос
/ 13 апреля 2020

Что происходит с XAML:

Например:

xaml в PageView.xaml:

<Label
    x:Name="Geronimo"
    HorizontalOptions="Center"
    Text="Hello"
    VerticalOptions="Center" />

Когда он построен, генерируется C# файл PageView.xaml.g.cs (который вы не изменяете вручную) генерируется. Этот файл содержит:

public partial class PageView

и

private global::Xamarin.Forms.Label Geronimo;

и

Geronimo = global::Xamarin.Forms.NameScopeExtensions.FindByName<global::Xamarin.Forms.Label>(this, "Geronimo");

В PageView.xaml.cs (в который вы вводите свой собственный код), Остальная часть частичного класса под названием PageView определена. В этом классе вы можете использовать метку Geronimo для выполнения таких действий, как:

Geronimo.Text = "Here we go";

Итак, когда в XAML используется x:Name, создается класс (сформированный из двух частичных классов) который имеет переменную-член с указанным именем. Таким образом, если вы работаете исключительно в C#, эквивалентным является то, что у вас просто есть переменная-член с нужным именем. w

В качестве обходного пути, вы можете создать макет стека, чтобы обернуть его.

<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];
 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...