2012-11-25 110 views
0

我想知道爲什麼我不能讓我的wpf數據網格自動生成列。 Propery AutogerenateColumns設置爲true。也許這與我沒有將itemssource綁定到類而是綁定到XElement的事實有關。如果可能有限制?我找不到任何有關此信息。由於綁定到xml數據的wpf datagrid無法自動生成列?

這是XAML:

<DataGrid 
     x:Name="grid" 
     Grid.Row="3" 
     Grid.Column="2" 
     HorizontalAlignment="Left" 
     ItemsSource="{Binding Path=Elements[person]}" 
     DataContext="{Binding Path=ResourceFileGroupMerged}" 
     AutoGenerateColumns="True"> 
    </DataGrid> 

在視圖模型:

public MainWindowViewModel() 
    { 
       ResourceFileGroupMerged = XElement.Load(@"c:\test.xml"); 
    } 
+0

我們可以看到一些代碼嗎? –

回答

1

我認爲你必須手動添加列,DataGrid能使用的XmlElement的屬性(如節點類型,OwnerDocument等)作爲自動生成的列。你應該在你的綁定使用XPath代替Path

 <DataGrid ItemsSource="{Binding XPath=Elements/person}" AutoGenerateColumns="False" DataContext="{Binding Path=ResourceFileGroupMerged}" > 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding [email protected]}" /> 
       <DataGridTextColumn Binding="{Binding [email protected]}" /> 
      </DataGrid.Columns> 
     </DataGrid> 

@prop1@prop2是你person的XmlElement屬性。

+0

感謝您的回答。我知道它適用於AutogeneratedColumns = False。我的問題是爲什麼(如果)它不適用於AutogeneratedColumn = True。我的問題是,我不知道有多少列,所以我不能在xaml中明確添加列。 – user1472131

+0

@ user1472131可能是因爲默認情況下,綁定在對象中查找公共屬性,如前所述。恐怕你必須使用代碼隱藏在運行時添加列。 – amnezjak