0
我的XAML看起來是這樣的:編程方式創建WPF DataGrid列未綁定
<DataGrid Name="gridBasket" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding BasketName}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
而且我的課是這樣的:
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 }
}
}
};
}
}
在我後面的代碼我試圖動態地添加列並設置這些動態列綁定到嵌套的集合屬性。
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;
}
計數即將變空。但是,如果我把固定值相同的綁定,計數開始出現。我應該做些什麼改變,以便每個水果的數量開始出現在標題中指定水果下的數據網格中。
爲什麼你不希望使用綁定?動態創建的列和數據綁定不是相互排斥的概念。 –
@MarkFeldman只要我從所提供的課程獲得期望的輸出,我就願意使用任何東西。我只需要一個正確的方向。 – nav
有一個很好的答案顯示如何做到這一點[這裏](http://stackoverflow.com/questions/320089/how-do-i-bind-a-wpf-datagrid-to-a-variable-number-of - 列),還有一篇關於它的文章[這裏](http://www.codeproject.com/Tips/676530/How-to-Add-Columns-to-a-DataGri),它使用了類似的技術。 –