1

我有一个 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>

我需要将 mode 和 beam 导入到 aDataGrid中,其中 mode 将是父网格,Beam 将是父网格的子网格。

我在读取 XML 中元素的内部标签时遇到问题。

因此,请指导我如何读取 XML 内部元素并将其放入 aGridView中,以及如何GridView为网格添加子元素并为它做同样的事情。

谢谢。

4

1 回答 1

1

我从你的 xml 制作了一个 data.xml 文件

在 XAML 中,我添加了一个 XMLDataProvider 来读取该文件,然后我们可以提前使用它

<XmlDataProvider Source="data.xml" x:Key="dataSource" XPath="code/rccontroller/experiment/profile"/>

在这里,我们说我们对所有配置文件都感兴趣

然后在数据网格中我们使用模式和显示模式和光束名称

<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>

如您所见,我们将数据网格 DataContext 绑定到 dataSource ,这是我们的 XMLDataProvider ,其 ItemsSource 绑定到该数据上下文中 Mode 的 Xpath ,然后在 column1 中是模式的名称,而在第 2 列中是其光束名称

已编辑

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 所在的位置

于 2013-07-26T10:26:18.987 回答