使用WPF从XML文件读取元素到DataGrid
问题描述:
我有一个包含元素的XML文件。我需要将元素名称(即Maruthi)提取到WPF中的DataGrid。使用WPF从XML文件读取元素<elementname>到DataGrid
我的XML文件:
<Maruthi>
<Maruthi_Alto>
<Description>MINI</Description>
</Maruthi_Alto>
<Maruthi_Ciaz>
<Description>Sedan</Description>
</Maruthi_Ciaz>
</Maruthi>
在XAML:
<DataGrid
DataContext="{StaticResource CarData}"
ItemsSource="{Binding XPath=}"
AutoGenerateColumns="False" Height="Auto"
Name="dataGrid2" Margin="0,25,0,0"
VerticalAlignment="Top" HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn
Header="Car Name"
Binding="{Binding XPath=}"/>
<DataGridTextColumn
Header="Car Model"
Binding="{Binding XPath=}"/>
<DataGridTextColumn
Header="Description"
Binding="{Binding XPath=}" />
</DataGrid.Columns>
</DataGrid>
我被困在XAML寻找路径的细节。
答
试试这个:
<Window.Resources>
<XmlDataProvider x:Key="dataGridData" XPath="Cars">
<x:XData>
<Cars xmlns="">
<Maruthi>
<Maruthi_Alto>
<Description>MINI</Description>
</Maruthi_Alto>
<Maruthi_Ciaz>
<Description>Sedan</Description>
</Maruthi_Ciaz>
</Maruthi>
</Cars>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid>
<DataGrid DataContext="{StaticResource dataGridData}"
ItemsSource="{Binding XPath=*}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Car Name" Binding="{Binding Path=Name}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
每行显示一个XML元素,每个元素有一个“名称”属性,我只是绑定到这个属性:Binding="{Binding Path=Name}"
。
+0
你能解释为什么你的答案解决了OP的问题吗? –
+2
@Tomasz Kowalczyk我在答案中写了解释。 – 2016-11-19 20:18:48
谢谢jackfarm。 。但在你的答案附加Windows资源中的XML数据,但事情是我有大约70差异XML文件,我需要读取所有文件元素名称,所以有什么办法解决这个问题。请帮助我。 。 – pavan