Привязка данных Silverlight grid к программному «сложному свойству»?

#c# #silverlight #data-binding #datagrid

#c# #silverlight #привязка данных #datagrid

Вопрос:

У меня есть datagrid, содержимое которого я создаю программно, поскольку столбцы будут меняться в зависимости от свойства complex collection объекта. Рассматриваемый объект имеет, скажем, 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);
  

Как бы я программно добавил столбец для каждого «MyNameValuePairProp» в свойстве списка «Props» моего объекта И привязал к нему данные, когда я вызываю это после настройки столбцов:

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