我有以下XML,我想填写WPF中的DataGrid
<?xml version="1.0" encoding="UTF-8"?>
<Start>
<General>
<ItemList>
<Item>
<name>iustin</name>
<value>20</value>
<behaviourList>
<behaviour>1</behaviour>
<behaviour>2</behaviour>
<behaviour>3</behaviour>
<behaviour>4</behaviour>
</behaviourList>
</Item>
<Item>
<name>alin</name>
<value>30</value>
<behaviourList>
<behaviour>1</behaviour>
<behaviour>2</behaviour>
<behaviour>3</behaviour>
<behaviour>4</behaviour>
</behaviourList>
</Item>
</ItemList>
</General>
</Start>
我做到了。
public MainWindow()
{
InitializeComponent();
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"C:\Users\WAVI\documents\visual studio 2015\Projects\DummyProject\DummyProject\XML\TemperatureSensors.xml");
dataGrid.ItemsSource = dataSet.Tables[2].DefaultView;
}
但我不能显示的行为列表,我知道它,因为我说:表[2],这是表[3],但我无法弄清楚如何解决这个问题。此外,我希望行为是一个ComboBox。
P.S:这只是一个例子,但想法是以通用方式制作它。
谢谢
答案 0 :(得分:0)
试试这个解决方案
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Value", typeof(int));
dt.Columns.Add("Behaviour", typeof(int));
foreach(XElement item in doc.Descendants("Item"))
{
string name = (string)item.Element("name");
int value = (int)item.Element("value");
foreach (XElement behaviour in item.Descendants("behaviour"))
{
dt.Rows.Add(new object[] { name, value, (int)behaviour });
}
}
}
}
}