Wpf 读取XML并将其导入数据网格
我有一个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=
<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代码…非常感谢,先生,它工作得非常好…非常感谢你的帮助…!!:):)