0

wpf データグリッドで列を自動生成できないのはなぜだろうと思っていました。プロパティ AutogerenateColumns が true に設定されています。たぶん、アイテムソースをクラスではなく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>

ビューモデルで:

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

1 に答える 1

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とはXmlElement@prop2の属性ですperson

于 2012-11-25T23:30:48.380 に答える