2

Web サービスから使用しているこのデータセットがあります。Microsoft ADO から生成された XML のようです。このデータを C# の WPF データグリッドにバインドしたいのですが、名前空間のコーディング方法がよくわかりません。

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
    xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
    xmlns:rs='urn:schemas-microsoft-com:rowset'
    xmlns:z='#RowsetSchema'>
<rs:data>
    <z:row ResumeID='7217937' FullName='Brianna Burgwell' AddressLine1='430 Bar Ranch Rd.' AddressLine2='' City='Buford' PostalCode='90210' State='CA' Country='US'/>
    <z:row ResumeID='7218085' FullName='Mandy Philips' AddressLine1='200 Beltway Loop' AddressLine2='' City='Buford' PostalCode='90210' State='CA' Country='US'/>
</rs:data>
</xml>

すべての名前空間プレフィックスを削除して単純な XML にすると、次の XAML が機能します。

<Grid.Resources>
    <XmlDataProvider x:Key="applicants" Source="sample.xml" />
</Grid.Resources>
<DataGrid x:Name="applicantGrid" DataContext="{StaticResource applicants}" ItemsSource="{Binding XPath=/data/row}" AutoGenerateColumns="False" Margin="12,12,31,12" SelectionChanged="applicantGrid_SelectionChanged">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ResumeID" Binding="{Binding XPath=@ResumeID}" />
        <DataGridTextColumn Header="Name" Binding="{Binding XPath=@FullName}" />
    </DataGrid.Columns>
</DataGrid>

しかし、名前空間では、XmlNamespaceMappingCollection の正しい構成を理解できません。

4

1 に答える 1

2

で名前空間のコレクションを設定し、プロパティを使用してXmlNamespaceMappingCollection適用できますXmlDataProviderXmlNamespaceManager

<Grid.Resources>
    <XmlNamespaceMappingCollection x:Key="myNamespaces">
       <XmlNamespaceMapping Uri="http://www.somenamespace.com" Prefix="namespace1"/>
       <XmlNamespaceMapping Uri="http://www.anothernamespace.com" Prefix="namespace2"/>
    </XmlNamespaceMappingCollection>

    <XmlDataProvider x:Key="applicants" XmlNamespaceManager="{StaticResource myNamespaces}" Source="sample.xml" />
</Grid.Resources>
<DataGrid x:Name="applicantGrid" DataContext="{StaticResource applicants}" ItemsSource="{Binding XPath=/data/row}" AutoGenerateColumns="False" Margin="12,12,31,12" SelectionChanged="applicantGrid_SelectionChanged">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ResumeID" Binding="{Binding XPath=namespace1:ResumeID}" />
        <DataGridTextColumn Header="Name" Binding="{Binding XPath=namespace2:FullName}" />
    </DataGrid.Columns>
</DataGrid>
于 2013-11-13T20:10:45.990 に答える