我想知道为什么我不能让我的wpf datagrid自动生成列。功能AutogerenateColumns设置为true。也许这与我没有将itemssource绑定到类而是绑定到XElement这一事实有关。如果可能有限制?我找不到任何关于此的信息。感谢
这是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>
在ViewModel中:
public MainWindowViewModel()
{
ResourceFileGroupMerged = XElement.Load(@"c:\test.xml");
}
答案 0 :(得分:1)
我认为你必须手动添加列,因为DataGrid会使用XmlElement的属性(例如NodeType,OwnerDocument等)作为自动生成的列。您应该在绑定中使用XPath
而不是Path
:
<DataGrid ItemsSource="{Binding XPath=Elements/person}" AutoGenerateColumns="False" DataContext="{Binding Path=ResourceFileGroupMerged}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding XPath=@prop1}" />
<DataGridTextColumn Binding="{Binding XPath=@prop2}" />
</DataGrid.Columns>
</DataGrid>
@prop1
和@prop2
是person
XmlElement的属性。