2013-07-26 50 views
1

我有一個看起來像一個XML文件:讀一個XML並將其導入到一個DataGrid

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

我需要導入模式和梁成DataGrid,在模式將是父電網和束將成爲家長網格的孩子。

我有閱讀XML中元素的內部標籤的問題。

因此,請直接指導如何讀取XML內部元素並將其放入GridView以及如何爲網格添加子節點GridView並對其執行相同操作。

謝謝。

+0

做ÿ你試過什麼?在WPF數據網格中,您可以使用XPath綁定到XML元素。對於子網格,您可能需要指定您的datagridrow模板併爲其中的內部項目執行XPath綁定 – whoisthis

+0

請參閱http://stackoverflow.com/questions/2199721/how-to-bind-xml-to-the-wpf-datagrid - 正確地http://www.c-sharpcorner.com/UploadFile/mamta_m/binding-xml-to-a-wpf-datagrid/ – whoisthis

+0

嘿Bjoshi,讓我們忘了子網格視圖和所有。 我只想檢索模式和光束的內部元素的值... –

回答

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 [email protected]}"/> 
    <DataGridTextColumn Header="Beam name" Binding="{Binding XPath=beam/@name}"/>     
    </DataGrid.Columns> 
</DataGrid> 

正如你可以看到,我們勢必將DataGrid的DataContext到數據源這是我們XMLDataProvider和它的ItemsSource到模式的Xpath在DataContext的,然後在列1是模式的,而名字列2的光束名

EDITED

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 [email protected]}"/> 
      <DataGridTextColumn Header="Beam name" Binding="{Binding XPath=beam/@name}"/>     
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

把你的XML文件,將其命名爲data.xml中它複製到的位置在您的exe存在

+0

這是如果你想直接在DataGrid中顯示XML,但是如果您想在代碼隱藏中解析它並對其執行操作,那麼我會說您使用Linq查詢來解析XML並創建您的模型對象,例如Mode/Beam /等,並將這些對象綁定到演示文稿 – whoisthis

+0

我真的很感激你的幫助喬希先生, 事情是我不能執行你給的代碼... 它是扔我多個錯誤.. 所以我真的很喜歡你提供整個xaml代碼對我來說工作正常... –

+0

檢查編輯答案 – whoisthis

相關問題