Как отобразить коллекцию внутри коллекции?

У меня есть следующие классы:

public class Order
{
public string OrderName { get; set; }
public List<Parts> PartsList { get; set; }
}

public class Parts
{
public string PartName { get; set; }
public double PartQuantity { get; set; }
}

В моем коде я создаю список Order объекты

List<Order> myOrders;

Я хотел бы как-то отобразить все это пользователю, например, используя панель стека элементов, где первым является TextBox для отображения OrderName а второй Datagrid отобразить список деталей?

Честно говоря, я пробую много разных вещей (у меня нет требований к тому, какой тип элементов управления использовать), но я никогда не могу получить PartsList показать правильно (либо я ничего не получаю, либо я получаю "Collection"показать пользователю.

Целью было бы увидеть что-то вроде этого:

Order1    Part1    7
          Part2    12
Order2    Part1    100
          Part2    1
          Part3    58

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

Любая помощь приветствуется.

1 ответ

Решение

Был бы TreeView Работа? Это будет выглядеть примерно так:

- Order 1
  * Part A (100)
  * Part B (200)
+ Order 2
+ Order 3
- Order 4
  * Part C (300)
  * Part D (400)
  * Part E (500)
+ Order 5
...

Вы могли бы сделать что-то вроде этого:

void AddOrderToTree(Order order)
{
  var orderNode = treeView.Nodes.Add(order);

  foreach(var part in order.Parts)
    orderNode.Nodes.Add(part);
}

Но да, как указывалось, я бы использовал такие свойства:

public class Part
{
  public virtual string Name { get; set; }
  public virtual double Quantity { get; set; }

  public override string ToString()
  {
    return string.Format("{0}: {1}", this.Name, this.Quantity.ToString());
  }
}

public class Order
{
  public virtual string Name { get; set; }
  public virtual List<Part> Parts { get; set; }

  public override string ToString()
  { 
    return this.Name;
  }
}
Другие вопросы по тегам