2011-07-26 27 views
0

我正在wpf中開發一個應用程序,其中有一個數據網格。我想要從xml動態添加datagrid的列。從xml文件中綁定Linq Datagrid

<Department Name='D1' TotalCapacity='5'> 
    <Class Name='c1' Capacity='3'></Class> 
    <Class Name='c2' Capacity='2'></Class> 
</Department> 

<Department Name='D2' TotalCapacity='10'> 
    <Class Name='c1' Capacity='5'></Class> 
    <Class Name='c3' Capacity='5'></Class> 
</Department> 

現在,基於該XML我要顯示的數據網格爲:

DepartmentName的TotalCapacityC1C2C3

D1     5  3 2 - 

D2     10  5 - 5 

回答

0

我好奇,並沒有做過你'重新嘗試之前,所以我想我會給它一個刺。通過這個this MSDN article關於這個問題的走向,我想出了這個:

<Grid> 
    <Grid.Resources> 
     <XmlDataProvider x:Key="DepartmentData" XPath="Departments/Department"> 
      <x:XData> 
       <Departments xmlns=""> 
        <Department Name='D1' TotalCapacity='5'> 
         <Class Name='c1' Capacity='3'/> 
         <Class Name='c2' Capacity='2'/> 
        </Department> 
        <Department Name='D2' TotalCapacity='10'> 
         <Class Name='c1' Capacity='5'/> 
         <Class Name='c3' Capacity='5'/> 
        </Department> 
       </Departments> 
      </x:XData> 
     </XmlDataProvider> 
    </Grid.Resources> 
    <DataGrid ItemsSource="{Binding Source={StaticResource DepartmentData}}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Department Name" Binding="{Binding [email protected]}"/> 
      <DataGridTextColumn Header="Total Capacity" Binding="{Binding [email protected]}"/> 
      <DataGridTextColumn Header="c1"> 
       <DataGridTextColumn.Binding> 
        <Binding XPath="Class[@Name='c1']/@Capacity"/> 
       </DataGridTextColumn.Binding> 
      </DataGridTextColumn> 
      <DataGridTextColumn Header="c2"> 
       <DataGridTextColumn.Binding> 
        <Binding XPath="Class[@Name='c2']/@Capacity"/> 
       </DataGridTextColumn.Binding> 
      </DataGridTextColumn> 
      <DataGridTextColumn Header="c3"> 
       <DataGridTextColumn.Binding> 
        <Binding XPath="Class[@Name='c3']/@Capacity"/> 
       </DataGridTextColumn.Binding> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

結果:

The result

祝你好運!

編輯:

我才意識到你要的動態添加列 - 我不知道有一個簡單的方法來做到這一點,看到你的XML不格式構成的,它本身就適用於開箱即用的表格顯示(我不得不使用一些XPath魔術來將您的XML轉換爲平面格式)。希望這會讓你走上正確的道路。

+0

是的,這個列需要是動態的,因此可能有類c4,c5等等。根據添加到各個部門的類別,我希望將它們顯示爲具有作爲各部門單元值的容量的列 – saloni