Как отобразить коллекцию внутри коллекции?
У меня есть следующие классы:
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;
}
}