我试图从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