将xml动态加载到WPF数据网格中

时间:2015-05-05 10:05:03

标签: c# xml wpf

我如何从XML填充WPF数据网格,我只知道它将包含一系列元素但不包含名称或属性?

当我获取数据时,它呈XmlNodes数组的形状。这有用吗?

我尝试过各种各样的组合,包括XmlDataProvider等。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这就是诀窍:

            var sb = new StringBuilder("<root>");
            foreach (var node in xmlNodes)
            {
                sb.AppendLine(node.OuterXml);
            }
            sb.AppendLine("</root>");
            var ds = new DataSet();
            ds.ReadXml(new StringReader(sb.ToString()));


            return ds.Tables[0];
有点难看,我知道如果你有一个更优雅的解决方案,请告诉我。

答案 1 :(得分:0)

最简单的方法是从DataSet构造xml并绑定绑定数据集。

<DataGrid Name="dataGrid1" ItemsSource="{Binding}" AutoGenerateColumns="true"/>

C#

string myXMLfile = @"C:\myfile.xml";
DataSet ds = new DataSet();

// Create new FileStream with which to read the schema.
System.IO.FileStream fsReadXml = new System.IO.FileStream 
    (myXMLfile, System.IO.FileMode.Open);
try
{
    ds.ReadXml(fsReadXml);
    dataGrid1.DataSource = ds.Table[0].DefaultView; 
    // or  dataGrid1.DataSource = ds;    
}
finally
{
    fsReadXml.Close();
}