У меня есть список списка в C #, и я хочу связать список в xaml, используя группировку просмотра списка - PullRequest
0 голосов
/ 18 апреля 2019

Нужна помощь в связывании списков списков в xaml.

Уже пытались реализовать то же самое с помощью Nested Listview, но это вызывает сбой моего приложения при прокрутке. Я предполагаю, что это не очень хорошая идея.

Вот мой класс модели для родителей:

public class Parent
{

    public string Id { get; set; }
    public string Name { get; set; }

    public List<Child> ChildList { get; set; }

}

Детский класс:

public class Child
{
    public string ChildName{ get; set; }
 }

ViewModel:

public ObservableCollection< Parent > MyList = new ObservableCollection< Parent >();

В Mylist я получаю список объектов «Parent», каждый из которых содержит Id, Name и объект «ChildList», который также является списком (несколько объектов ChildList), содержащим ChildName

В моем списке просмотра с Itemsource как «MyList» я хочу «Name» в качестве заголовка, который содержит «ChildList» (несколько «ChildName»)

Что-то вроде:

Name1


-ChildName1

-ChildName2

-ChildName3

Name2


-ChildName1

-ChildName2

Могу ли я добиться того же, используя группировку списков просмотра? Если да, то может кто-нибудь помочь мне с реализацией, так как я не могу правильно сгруппировать данные ..

1 Ответ

0 голосов
/ 18 апреля 2019

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

Первый способ, я бы начал с просмотра списка родителей.Затем я бы обработал событие clicked / tapped (в зависимости от того, какую платформу вы хотите использовать), чтобы открыть второе, меньшее представление списка на главной странице, отображающее дочерние элементы родительского элемента, который был нажат / нажат.Нажатие / нажатие в любом месте экрана, кроме дочернего списка, уберет его.

Второй способ, который я могу себе представить, - это просто добавить родителя в список и затем добавить всех его потомков.Вот что-то из этого:

void FillParentListView(List<Parent> parents)
{
    foreach(Parent p in parents)
    {
        listview.Items.Add(p);
        foreach(Child c in p.ChildList)
            listview.Items.Add(c);
    }
}

Недостаток этого второго варианта в том, что вам, вероятно, понадобится создавать различные конструкции ячеек, чтобы было легко различать родительский и дочерний элементы, и вам нужно будет пытаться приводить каждый раз, когда выхотите прочитать информацию из списка, чтобы увидеть, что было выбрано.

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