2011-05-10 45 views
0

我有一个datagrid,我正在编程的内容,因为列将根据对象的复杂集合属性而更改。 有问题的对象有2个标准属性。Silverlight网格编程“复杂属性”数据绑定?

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

我怎么会去编程,我对象的“道具”列表属性向每“MyNameValuePairProp”一列,数据绑定到,当我把这个后,我成立了列:

myDataGrid.ItemsSource = myCollOfMyObjects; 

回答

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