如何在集合中显示集合?

时间:2013-01-20 10:56:29

标签: c# wpf

我有以下课程:

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(要么我得不到任何东西,要么得到“{{1} “向用户显示。

目标是看到这样的事情:

Collection

或者其他什么,标题可以是任何东西,说实话,我对许多建议持开放态度。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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;
  }
}