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