Переплет вложенных коллекций - PullRequest
0 голосов
/ 20 августа 2009

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

Вот моя коллекция:

Public class GrandParent
{
    string name;
    Icollection<Parent> ParentCollection;
}

Public class Parent
{
    string lastname;
    Icollection<Child> ChildCollection;
}

Public class Child
{
    string name;
    int age;
}

Я хочу вывод как это:

GrandParent.Name Parent1.LastName Parent2.LastName Parent3.LastName

Дети GP1 [GP1, Parent1.LastName] Дети [GP1, Parent2.LastName] Дети [GP1, Parent3.LastName]
Дети GP2 [GP2, Parent1.LastName] Дети [GP2, Parent2.LastName] Дети [GP2, Parent3.LastName]

Где Parent.LastNames статичны.

На данный момент мой класс viewmodel (класс привязки) выглядит так:

Class viewmodel
{
    collection<string> GrandParentNames
    {
    }

    collection<string> Parent1LastNames
    {
    }

    collection<string> Parent2LastNames
    {
    }

    collection<string> Parent3LastName
    {
    }
}

Может ли кто-нибудь предложить мне лучший подход к этому?

Ответы [ 3 ]

1 голос
/ 20 августа 2009

Ваш вопрос немного расплывчат; Я не совсем понимаю, что вы пытаетесь связать ... Что вы подразумеваете под:

привязать вложенную коллекцию к панели сетки

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

0 голосов
/ 19 ноября 2009

Я просто собираюсь сделать предположение на основе вашего имени, что вы делаете это в wpf.

В вашем коде у вас была правильная идея для Модели, но (предполагая, что я понимаю, к чему вы стремитесь), вы немного сбились с пути с ViewModel. Поскольку класс GrandParent имеет коллекцию Parents, а Parents - коллекцию Children, в вашей ViewModel вам понадобится только коллекция GrandParrents в вашей ViewModel. так что ваша ViewModel будет ближе к:

class ViewModel
    {
        ICollection<GrandParent> Grents;
    }

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

<Window.Resources>

 <local:ViewModel x:Key="ViewModelDataSource" d:IsDataSource="True"/>
 <DataTemplate x:Key="GrandParents_Data_Template">
  <StackPanel>
<TextBlock Text="{Binding name}"/>
<ListBox ItemsSource="{Binding ParentCollection}" ItemTemplate="{DynamicResource Parents_Data_Template}"/>

</Window.Resources>

Надеюсь, это поможет вам, по крайней мере, двигаться в правильном направлении. Дайте мне знать, если у вас есть еще вопросы.

0 голосов
/ 23 августа 2009

Привет, Чарли, похоже, я не очень хорошо поставил свой вопрос .... Извините за то же самое ...

Мои коллекции вложены, но нужный вывод не вложен ..

должно быть как ...

Родительское свойство, которое я хочу использовать для заголовка Имя GranParent, которое я хочу использовать для первого столбца в то время как дочерние свойства я хочу использовать для других столбцов

Таким образом, ввод - «Предоставить родителю» -> «Родителю» -> «Дочернему» (от 1 до многих)

выход -

             --         Parent        --               Parent1

GrandParent.Name - Дитя Родителя - Дитя Родителя1 GrandParent1.Name - Дитя Родителя - Дитя Родителя1

ЕСЛИ я приведу здесь пример ...

Страна -> Назначение -> Персона (Имя, Возраст)

например. США - менеджер - человек (A, 26) США - Главный архитектор - Персона (B, 28) Великобритания - Менеджер - Персона (C, 26) Великобритания - Главный архитектор - Персона (Д, 28)

**out put is :**

(заголовок)

Страна --- Мангер --- Главный архитектор

(R0w1)


США --- A, 26 --- B, 28

(R0w2)

UK --- C, 26 --- D, 28

был бы признателен за любую подсказку или код ...

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