Привязка XAML к динамическим вложенным объектам - PullRequest
0 голосов
/ 24 октября 2018

Я получил ответ от JSON API и сопоставил его в своем коде с объектом.Структура объекта выглядит следующим образом:

public class A {
    public B b;
    public C c;
    public D d;
}
public class B{
    public string a;
    public string b;
}
...
public class D{
    public F[] f;
}
public class F{
    public string c;
    public string d;
    public string e;
}

Я установил привязку к Observable Collection <A> aCollection, и она работает нормально.У меня есть несколько объектов A, и я могу получить доступ ко всем членам, таким как этот.

<ListView ItemsSource="{Binding aCollection}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout>
                        <Label Text="{Binding b.a, TargetNullValue='-'}"/>
                        <Label Text="{Binding c.a, TargetNullValue='-'}"/>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Но я не знаю, как я могу получить доступ к массиву F [] и членам F. Также я не знаюзаранее, насколько большой массив будет.

Чего я хочу добиться, так это отобразить каждую запись в массиве относительно содержащего Объекта.

Надеюсь, этот вопрос имеет смысл.

1 Ответ

0 голосов
/ 25 октября 2018

Если вы хотите привязать данные массива к каждой ячейке в просмотре списка. В соответствии с вашим кодом вы можете изменить это следующим образом:

<ListView ItemsSource="{Binding aCollection}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <Label Text="{Binding b.a, TargetNullValue='-'}"/>
                    <Label Text="{Binding c.a, TargetNullValue='-'}"/>

                    //***
                        <ListView ItemsSource="{Binding d.F}">
                          <ListView.ItemTemplate>
                             <DataTemplate>
                               <ViewCell>
                                  <StackLayout>
                                     <Entry Text="{Binding c}"/>
                                     <Entry Text="{Binding d}"/>
                                     <Entry Text="{Binding e}"/>
                                  </StackLayout>
                               </ViewCell>
                             </DataTemplate>
                          </ListView.ItemTemplate>
                        </ListView>
                    //***

                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

использовать просмотр списка, содержащий представление списка, чтобы показать данные и т. Д. И изменить класс Dна

 public class {
    public List<F> f{ get; set; }
 }

Не уверен, хочешь ли ты, надеюсь, будет полезным.

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