My Xaml looks like this:
<DataGrid Name="gridBasket" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding BasketName}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
And my class looks like:
public class Fruit
{
public int FruitId { get; set; }
public string FruitName { get; set; }
public int FruitCount { get; set; }
}
public class Basket
{
public int BasketId { get; set; }
public string BasketName { get; set; }
public ObservableCollection<Fruit> Fruits { get; set; }
}
public class Shop
{
public static ObservableCollection<Basket> Bind()
{
return new ObservableCollection<Basket>
{
new Basket { BasketId = 1, BasketName = "Gold",
Fruits = new ObservableCollection<Fruit>
{
new Fruit { FruitId = 1, FruitName = "Oranges", FruitCount = 10 },
new Fruit { FruitId = 2, FruitName = "Apples", FruitCount = 8 },
new Fruit { FruitId = 3, FruitName = "Bananas", FruitCount = 6 }
}
},
new Basket { BasketId = 2, BasketName = "Silver",
Fruits = new ObservableCollection<Fruit>
{
new Fruit { FruitId = 1, FruitName = "Oranges", FruitCount = 5 },
new Fruit { FruitId = 2, FruitName = "Apples", FruitCount = 4 },
new Fruit { FruitId = 3, FruitName = "Bananas", FruitCount = 3 }
}
}
};
}
}
In my code behind I have tried to add columns dynamically and set the bindings of these dynamic columns to the nested collection property.
private void LoadData()
{
gridBasket.AutoGenerateColumns = false;
ObservableCollection<DemoBEL.Basket> bColl = DemoBEL.Shop.Bind();
gridBasket.ItemsSource = bColl;
int i = 0;
foreach (DemoBEL.Fruit fObj in bColl[0].Fruits)
{
gridBasket.Columns.Add(AddColumn(i, fObj.FruitName));
i++;
}
}
private DataGridTextColumn AddColumn(int i, string propName)
{
DataGridTextColumn tc = new DataGridTextColumn();
tc.Header = propName;
String binding = String.Format("{{Binding Path=Fruits[{0}].{1}}}", 0, "FruitCount");
Binding tcBinding = new Binding(binding);
tc.Binding = tcBinding;
return tc;
}
The Count is coming empty. But if I put same binding with fixed values, the count start appearing. What changes should I make such that the count for each fruit start appearing in the data grid under the designated fruit in the header.