Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 读取XML并将其导入数据网格_Wpf_Xml_Datagrid - Fatal编程技术网

Wpf 读取XML并将其导入数据网格

Wpf 读取XML并将其导入数据网格,wpf,xml,datagrid,Wpf,Xml,Datagrid,我有一个XML文件,看起来像: <code> <rccontroller> <experiment> <profile name="Profile 1" scanCycle="1" profileTime="32.76" attenuator="31" archive="" coded="true"> <mode name="Mode 1" scanCycle=

我有一个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导入一个
DataGrid
,其中mode将是父网格,beam将是父网格的子网格

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

因此,请告诉我如何读取XML内部元素并将其放入
GridView
中,以及如何为网格添加子元素
GridView
,并对其执行相同的操作


谢谢。

我用您的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中模式的Xpath,然后在第1列中是模式的名称,而在第2列中是模式的梁名称

<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>
已编辑

XAML(仅网格部分)



将xml放入文件中,命名为data.xml将其复制到exe所在的位置

我用您的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中模式的Xpath,然后在第1列中是模式的名称,而在第2列中是模式的梁名称

<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>
已编辑

XAML(仅网格部分)



将xml放入文件中,命名为data.xml将其复制到exe所在的位置

是否尝试了某些操作?在WPF datagrid中,可以使用XPath绑定到XML元素。对于子网格,您可能需要指定datagridrow模板,并为内部项进行XPath绑定。请参阅一些参考资料Hey Bjoshi,让我们忘掉子网格视图和所有内容。我只想检索Mode和Beam的内部元素的值…我将把那个注释作为一个答案来设置代码格式,然后我们就可以从那里开始工作了。你试过什么了吗?在WPF datagrid中,可以使用XPath绑定到XML元素。对于子网格,您可能需要指定datagridrow模板,并为内部项进行XPath绑定。请参阅一些参考资料Hey Bjoshi,让我们忘掉子网格视图和所有内容。我只想检索Mode和Beam的内部元素的值…我将把该注释作为代码格式的答案,然后我们可以从那里开始工作这是如果您想在DataGrid中直接显示XML,但是,如果您想在codebehind中解析它并对其进行操作,那么我会说您可以使用Linq查询来解析XML并创建模型对象,如Mode/Beam/etc,并绑定这些对象以进行表示。我非常感谢您的帮助Joshi先生,问题是我无法执行您提供的代码。。。这让我犯了很多错误。。所以我真的希望你能为我提供完整的xaml代码…非常感谢,先生,它工作得非常好…非常感谢你的帮助…!!:):)这是如果您想直接在DataGrid中显示XML,但是如果您想在codebehind中解析XML并对其进行操作,那么我会说您可以使用Linq查询来解析XML并创建模型对象,如Mode/Beam/etc,并绑定这些对象进行表示。非常感谢您的帮助Joshi先生,问题是我不能执行你给我的代码。。。这让我犯了很多错误。。所以我真的希望你能为我提供完整的xaml代码…非常感谢,先生,它工作得非常好…非常感谢你的帮助…!!:):)