Silverlight网格程序化“复杂属性”数据绑定?

时间:2011-05-10 17:36:09

标签: c# silverlight data-binding datagrid

我有一个数据网格,我正在以编程方式构建内容,因为列将根据对象的复杂集合属性进行更改。 有问题的对象有2个标准属性。

public class MyObject
{
   private List<MyNameValuePairProps> props = new List<MyNameValuePairProps>();

   public int Id { get; set; }
   public string Name { get; set; }
   public List<MyNameValuePairProps> Props
   {
      get { return props; }
      set { props = value; }
   }
}

以编程方式我每个属性都添加DataGridTextColumns,如下所示:

DataGridTextColumn colId = new DataGridTextColumn();
colId.Header = "Id";
colId.Binding = new Binding("Id");
myDataGrid.Columns.Add(colId);

DataGridTextColumn colName = new DataGridTextColumn();
colName.Header = "Name";
colName.Binding = new Binding("Name");
myDataGrid.Columns.Add(colName);

在设置列之后,当我调用它时,如何以编程方式在我的对象AND databind的“Props”列表属性中为每个“MyNameValuePairProp”添加一列:

myDataGrid.ItemsSource = myCollOfMyObjects;

1 个答案:

答案 0 :(得分:1)

您可以简单地在绑定上设置源(如下所示)

foreach(MyNameValuePairProps pair in Props)
{
    DataGridTextColumn column = x;// create column as you will
    column.Binding = new Binding("Value") { Source = pair};
    myDataGrid.Columns.Add(column);
}