0

以下のxmlファイルがあります。プロジェクトの debug/bin フォルダーにコピーし、プロジェクトにもアタッチしました。

<?xml version="1.0" standalone="yes" ?> 
- <NorthwindDataSet xmlns="http://tempuri.org/NorthwindDataSet.xsd">
- <Customers>
  <CustomerID>ALFKI</CustomerID> 
  <CompanyName>Alfreds Futterkiste</CompanyName> 
  <ContactName>Maria Anders</ContactName> 
  <ContactTitle>Sales Representative</ContactTitle> 
  <Address>Obere Str. 57</Address> 
  <City>Berlin</City> 
  <PostalCode>12209</PostalCode> 
  <Country>Germany</Country> 
  <Phone>030-0074321</Phone> 
  <Fax>030-0076545</Fax> 
  </Customers>
- <Customers>
  <CustomerID>ANATR</CustomerID> 
  <CompanyName>Ana Trujillo Emparedados y helados</CompanyName> 
  <ContactName>Ana Trujillo</ContactName> 
  <ContactTitle>Owner</ContactTitle> 
  <Address>Avda. de la Constitución 2222</Address> 
  <City>México D.F.</City> 
  <PostalCode>05021</PostalCode> 
  <Country>Mexico</Country> 
  <Phone>(5) 555-4729</Phone> 
  <Fax>(5) 555-3745</Fax> 
  </Customers>
</NorthwindDataSet>

WPF アプリケーションで CustomerName、City などのプロパティをバインドしたいと考えています。以下のように XAML でバインドしようとしましたが、成功しませんでした。私が間違っていること、提案が必要です。

<Window.Resources>
        <XmlDataProvider x:Key="NorthData" Source="Northwind.xml" XPath="/Customers"/>
    </Window.Resources>
    <Grid>
        <Label Content="{Binding XPath=Address,FallbackValue=BindingFailed,Source={StaticResource NorthData}}" Height="28" HorizontalAlignment="Left" Margin="118,94,0,0" Name="label1" VerticalAlignment="Top" Width="127" />
        <ListBox ItemsSource="{Binding Source={StaticResource NorthData},XPath=City,FallbackValue=BindingFailed}" Height="100" HorizontalAlignment="Left" Margin="128,144,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" />
    </Grid> 
4

2 に答える 2

1

あなたのコードを使用して、XPath を少し変更し、提供していない XSD への参照を削除しましたが、うまくいきました。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <XmlDataProvider x:Key="NorthData" XPath="NorthwindDataSet/Customers">
            <x:XData>
                <NorthwindDataSet xmlns="">
                    <Customers>
                        <CustomerID>ALFKI</CustomerID>
                        <CompanyName>Alfreds Futterkiste</CompanyName>
                        <ContactName>Maria Anders</ContactName>
                        <ContactTitle>Sales Representative</ContactTitle>
                        <Address>Obere Str. 57</Address>
                        <City>Berlin</City>
                        <PostalCode>12209</PostalCode>
                        <Country>Germany</Country>
                        <Phone>030-0074321</Phone>
                        <Fax>030-0076545</Fax>
                    </Customers>
                    <Customers>
                        <CustomerID>ANATR</CustomerID>
                        <CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
                        <ContactName>Ana Trujillo</ContactName>
                        <ContactTitle>Owner</ContactTitle>
                        <Address>Avda. de la Constitucion 2222</Address>
                        <City>Mexico D.F.</City>
                        <PostalCode>05021</PostalCode>
                        <Country>Mexico</Country>
                        <Phone>(5) 555-4729</Phone>
                        <Fax>(5) 555-3745</Fax>
                    </Customers>
                </NorthwindDataSet>
            </x:XData>
        </XmlDataProvider>
    </Window.Resources>
    <Grid>
        <Label Content="{Binding XPath=Address
            , FallbackValue=BindingFailed
            , Source={StaticResource NorthData}}" 
               Height="28"
               HorizontalAlignment="Left" 
               Margin="118,94,0,0" Name="label1" 
               VerticalAlignment="Top" Width="127" />
        <ListBox ItemsSource="{Binding Source={StaticResource NorthData}
            , XPath=City
            , FallbackValue=BindingFailed}" 
                 Height="100" 
                 HorizontalAlignment="Left" 
                 Margin="128,144,0,0" 
                 Name="listBox1" 
                 VerticalAlignment="Top" 
                 Width="120" />
    </Grid>
</Window>
于 2013-03-21T18:58:32.243 に答える
0

DataContext を XML に設定する必要があります

<Window.Resources>
        <XmlDataProvider x:Key="NorthData" Source="Northwind.xml" XPath="/Customers"/>
    </Window.Resources>
    <Grid DataContext="{StaticResource NorthData}">
        <Label Content="{Binding XPath=Address,FallbackValue=BindingFailed,Source={StaticResource NorthData}}" Height="28" HorizontalAlignment="Left" Margin="118,94,0,0" Name="label1" VerticalAlignment="Top" Width="127" />
        <ListBox ItemsSource="{Binding Source={StaticResource NorthData},XPath=City,FallbackValue=BindingFailed}" Height="100" HorizontalAlignment="Left" Margin="128,144,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" />
    </Grid> 
于 2013-03-21T18:35:58.743 に答える