Сетка Silverlight программная привязка данных "сложное свойство"? - PullRequest
0 голосов
/ 10 мая 2011

У меня есть сетка данных, которую я создаю программно, поскольку столбцы будут меняться в зависимости от комплексного свойства коллекции объекта.У рассматриваемого объекта есть, скажем, 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» в свойстве списка «Реквизиты» моего объекта И данные связываются с ним, когда я вызываю его после настройки столбцов:

myDataGrid.ItemsSource = myCollOfMyObjects;

1 Ответ

1 голос
/ 10 мая 2011

Вы можете просто установить источник привязки (как показано ниже)

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