UWP 网格视图.xml数据绑定 [VB.NET]-



如何将以下简单.xml绑定到 uwp 中的网格视图/列表视图?

<TOOLS>
<TOOL>
<ID>0001</ID>
<CATEGORY>PIPING</CATEGORY>
<NAME>Straight Pipe Under internal Pressure (ASME B31.3 par.304.1.2).</NAME>
<HINT>HOOP STRESS, CIRCUMFERENTIAL STRESS</HINT>
</TOOL>
<TOOL>
<ID>0002</ID>
<CATEGORY>PIPING</CATEGORY>
<NAME>Mitered Segments of Pipe (ASME B31.3 par.304.2.3).</NAME>
<HINT></HINT>
</TOOL>
</TOOLS>

谢谢

虽然不能直接绑定 XML 文件,但可以先将此 XML 反序列化为普通类,然后将其绑定为普通数据。简单的类,如:

class Tool
{
public int Id {get;set;}
public string Category {get;set;}
public string Name {get;set;}
}

应该是你所需要的。可以通过 .NET 提供的多种方法之一手动浏览 XML 文档来反序列化文件,也可以使用属性自动反序列化,如此 SO 答案所示。

最后,您将得到一个Tool实例的集合,您将这些实例绑定到控件的ItemsSource

<GridView ItemsSource="{x:Bind Data, Mode=OneWay}" />

要正确显示它,您还需要使用ItemTemplate.有关此内容的更多信息。也有很多关于此的教程,例如这里。

我会使用 xml linq 将结果放入数据表中,然后绑定到表

Imports System.Xml
Imports System.Xml.Linq
Imports System.Data
Module Module1
Const FILENAME As String = "c:temptest.xml"
Sub Main()
Dim dt As New DataTable
dt.Columns.Add("ID", GetType(String))
dt.Columns.Add("CATEGORY", GetType(String))
dt.Columns.Add("NAME", GetType(String))
dt.Columns.Add("HINT", GetType(String))
Dim doc As XDocument = XDocument.Load(FILENAME)
For Each tool In doc.Descendants("TOOL")
dt.Rows.Add(New Object() {tool.Element("ID").Value, tool.Element("CATEGORY").Value, tool.Element("NAME").Value, tool.Element("HINT").Value})
Next tool
End Sub
End Module