我有一个XML文件,如下所示:
<code>
<rccontroller>
<experiment>
<profile name="Profile 1" scanCycle="1" profileTime="32.76" attenuator="31" archive="" coded="true">
<mode name="Mode 1" scanCycle="1" method="DBS" prf="1000" baudWidth="1" baudNo="16" positions="Z" coded="true">
<beam name="Beam 1" scanAngle="0" azimuth="0" offset="0" rmin="1" rmax="20" nci="256" nfft="256" nsa="1" nrgb="128" uiName="Z"/>
</mode>
</profile>
</experiment>
</rccontroller>
</code>
我需要将模式和波束导入DataGrid
,其中mode是父网格,Beam将是Parent网格的子项。
我在阅读XML中元素的内部标记时遇到了问题。
请指导我如何阅读XML内部元素并将其放在GridView
以及如何为网格添加子GridView
并为其执行相同操作的方式。
感谢。
答案 0 :(得分:1)
我从你的xml
创建了一个data.xml文件在XAML中我添加了一个XMLDataProvider,它读取该文件然后我们可以提前使用
<XmlDataProvider Source="data.xml" x:Key="dataSource" XPath="code/rccontroller/experiment/profile"/>
这里我们说我们对所有个人资料感兴趣
然后在datagrid中我们使用模式和显示模式以及光束名称
<DataGrid x:Name="dgXml" DataContext="{StaticResource dataSource}" ItemsSource="{Binding XPath=mode}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Mode name" Binding="{Binding XPath=@name}"/>
<DataGridTextColumn Header="Beam name" Binding="{Binding XPath=beam/@name}"/>
</DataGrid.Columns>
</DataGrid>
正如您所看到的,我们将datagrid DataContext绑定到dataSource,它是我们的XMLDataProvider,它的ItemsSource绑定到该datacontext中的Mode的Xpath,然后在column1中是模式的名称,而在第2列中它的波束名称
<强> EDITED 强>
XAML(仅限网格部分)
<Grid>
<Grid.Resources>
<XmlDataProvider Source="data.xml" x:Key="dataSource" XPath="code/rccontroller/experiment/profile"/>
</Grid.Resources>
<DataGrid x:Name="dgXml" DataContext="{StaticResource dataSource}" ItemsSource="{Binding XPath=mode}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Mode name" Binding="{Binding XPath=@name}"/>
<DataGridTextColumn Header="Beam name" Binding="{Binding XPath=beam/@name}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
将xml放入文件中,将其命名为data.xml,将其复制到exe所在的位置