0

XMLを定義するファイルを指定して、次の XAML を説明して修正できますかComboBox ItemsSource?

XAML:

<ComboBox Name="cbConnection" DataContext="{Binding Source=c:\temp\ConnectionList.xml, XPath=DBConnection}" ItemsSource="{Binding XPath=ComboItem}" DisplayMemberPath="Key" SelectedValuePath="Value">

c:\temp\ConnectionList.xml:

<?xml version="1.0" encoding="utf-8" ?>    
<DBConnection>
<ComboItem>
    <Key>Computer-A</Key>
    <Value>Server=COMPA;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
<ComboItem>
    <Key>Computer-B</Key>
    <Value>Server=COMPB\SQL2012STD;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
</DBConnection>
4

1 に答える 1

3

必ずしも DataContext をいじる必要はありません。ItemsSource を適切に設定するだけです。

  1. XMLDataProvider をセットアップし、xml ファイルを読み取って、他の WPF 要素にデータを提供します。ItemsSource は、このプロバイダーを指す必要があります。
  2. XML に終了タグを追加する
  3. トップレベルだけでなく、ComboItem と呼ばれるすべてのノードをクエリするように XPath クエリを修正します。

これが XMLDataProvider です。これをページのリソース ディクショナリに配置します。

<XmlDataProvider x:Key="XmlData"
                 Source="c:\temp\ConnectionList.xml">
</XmlDataProvider>

修正されたコンボボックスは次のとおりです。

<ComboBox x:Name="cbConnection"
          ItemsSource="{Binding Source={StaticResource XmlData}, XPath=//ComboItem}"
          DisplayMemberPath="Key"
          SelectedValuePath="Value" />

修正された XML は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>    
<DBConnection>
    <ComboItem>
        <Key>Computer-A</Key>
        <Value>Server=COMPA;Database=MyDB;Integrated Security=SSPI;</Value>
    </ComboItem>
    <ComboItem>
        <Key>Computer-B</Key>
        <Value>Server=COMPB\SQL2012STD;Database=MyDB;Integrated Security=SSPI;</Value>
    </ComboItem>
</DBConnection>
于 2013-01-22T17:47:08.153 に答える