Привязка к элементам списка в xamarin - PullRequest
0 голосов
/ 22 октября 2019

Итак, я уже создал несколько ярлыков и хочу привязать каждый label.text к элементу списка, как показывает код. но кажется, что я не могу получить доступ к стоимости предметов по индексу

<StackLayout Orientation="Horizontal" Margin="4,0,0,0" x:Name="stack0" IsVisible="True">
                        <Label  x:Name="CountRep0" FontSize="18" TextColor="White" Text="{Binding Counter[0]}"/>

                        <Label  x:Name="Objname0" FontSize="18" TextColor="White" Text="{Binding Objets_de_Commande[0]}"/>

                    </StackLayout>

<StackLayout Orientation="Horizontal" Margin="4,0,0,0" x:Name="stack1" IsVisible="True">
                        <Label  x:Name="CountRep1" FontSize="18" TextColor="White" Text="{Binding Counter[1]}"/>

                        <Label  x:Name="Objname1" FontSize="18" TextColor="White" Text="{Binding Objets_de_Commande[1]}"/>

                    </StackLayout>

, и у меня есть 2 списка "Objets_de_Commande" и "Counter". У вас есть какие-нибудь идеи, как я могу сделать эту работу?

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Это определенно возможно.

Вы можете получить доступ к элементу списка, используя привязку на основе индекса, используя тот же код, который вы ввели:

<Label  x:Name="Objname0" FontSize="18" TextColor="White" Text="{Binding Objets_de_Commande[0]}"/>

Просто убедитесь, что вы правильно настраиваетеBindingContext к странице в коде позади.

В этом другом посте показано, как выполнить привязку в Code (C#), но в XAML это не отличается.

Примечание: Как уже упоминалось в одном из комментариев: для вас может быть лучше взглянуть на ListView или CollectionView.

Надеюсь, это поможет .-

0 голосов
/ 23 октября 2019

Конечно, вы можете привязать элемент списка по индексу. например:

MainPage.xaml.cs

 public partial class MainPage : ContentPage
{
    public List<string> Counter { get { return new List<string> { "1", "2" }; } }

    public List<string> Objets_de_Commande { get { return new List<string> { "test01", "test02" }; } }

    public MainPage()
    {
        InitializeComponent();

        BindingContext = this;
    }
}

MainPage.xaml

 <StackLayout Orientation="Vertical"  >
    <StackLayout Orientation="Horizontal" Margin="4,0,0,0" x:Name="stack0" IsVisible="True">
        <Label  x:Name="CountRep0" FontSize="18" TextColor="Black" Text="{Binding Counter[0]}"/>
        <Label  x:Name="Objname0" FontSize="18" TextColor="Black" Text="{Binding Objets_de_Commande[0]}"/>
    </StackLayout>
    <StackLayout Orientation="Horizontal" Margin="4,0,0,0" x:Name="stack1" IsVisible="True">
        <Label  x:Name="CountRep1" FontSize="18" TextColor="Black" Text="{Binding Counter[1]}"/>

        <Label  x:Name="Objname1" FontSize="18" TextColor="Black" Text="{Binding Objets_de_Commande[1]}"/>
    </StackLayout>
</StackLayout>

Примечание:

ПростоОбратите внимание на фон и цвет шрифта, если они одинакового цвета, мы не смогли увидеть результат. Поэтому я изменил цвет текста на черный:

TextColor="Black"
...