2016-11-19 439 views
1

我有一個包含元素的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尋找路徑的細節。

+0

謝謝jackfarm。 。但在你的答案附加Windows資源中的XML數據,但事情是我有大約70差異XML文件,我需要讀取所有文件元素名稱,所以有什麼辦法解決這個問題。請幫助我。 。 – pavan

回答

0

試試這個:

<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