我試圖從XML文件中讀取所有屬性中的「數據」元素,並在DataGrid中顯示這些數據的未知量(WPF,.NET 4.0)填充WPF的DataGrid從XML
XML格式如下所示。
<root>
<Data Name1="Value1" Name2="Value2" ... />
<Data Name1="Value1" Name2="Value2" ... />
...
</root>
我沒有使用的屬性名稱(例如:NAME1,NAME2的Foo等)或屬性的數量的想法有在每個元件(每個元件可能不同數量的屬性)。每個新元素應顯示在新行上,並且每個屬性對應一列(如果該行不存在,則顯示爲空行)。
我正在努力爲要綁定的datagrid創建一個支持類,或者以編程方式創建它。
我現在的嘗試是創建一組文本列(給定的列名依據是什麼,我從XML文件中提取使用的列表)
List<string> dataTags = ...; //get list of attributes to use from xml
foreach (string d in dataTags) {
DataGridTextColumn col = new DataGridTextColumn();
col.Header = d;
dataGrid.Columns.Add(col);
}
我然後在每個迭代屬性並將其添加到列表(表示在數據網格顯示行),如果屬性名稱匹配的報頭的一個值
foreach (XElement e in xml.Descendants("Data")) {
//Store values to be added to the datagrid as a new row
List<string> row = new List<string>();
//Only add data where the attribute name matches one of the 'dataTags' we are given.
foreach(string d in dataTags) {
foreach (XAttribute a in e.Attributes()) {
if (d.Equals(a.Name.ToString())) {
row.Add(a.Value);
break;
}
}
}
//Add new row to the datagrid
dgData.Items.Add(row);
}
我一些存在的方式......但有一個DataGrid空行(正確的行數,但現在顯示數據)。
任何提示/指針,將不勝感激。
感謝的是......這個來了可怕的空行(即沒有顯示數據)。我可以確認dataGrid.ItemsSource被設置爲XML元素,並且列綁定是正確的 - 但仍不顯示任何數據。 – drew
您是否遵循我所展示的XmlDataProvider方法? –
我已經離開了幾天。剛回來並嘗試了XmlDataProvider解決方案。工作得很好。感謝您向正確的方向點頭。 – drew