绑定到xml数据的wpf datagrid不能自动生成列?

时间:2012-11-25 19:08:58

标签: wpf xml data-binding datagrid

我想知道为什么我不能让我的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");
    }

1 个答案:

答案 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@prop2person XmlElement的属性。