次のようなXMLファイルがあります
<Items>
<Item>
<Name>Item 1</Name>
<FirstProperty>42</FirstProperty>
<SecondProperty>37</SecondProperty>
</Item>
<Item>
<Name>Item 2</Name>
<FirstProperty>11</FirstProperty>
<SecondProperty>35</SecondProperty>
</Item>
</Items>
および次のようなXAMLファイル
<Grid>
<Grid.Resources>
<XmlDataProvider x:Key="ItemsXml" XPath="Items/Item" Source="Items.xml"/>
</Grid.Resources>
<ListBox Name="itemList" HorizontalAlignment="Left"
ItemsSource="{Binding Source={StaticResource ItemsXml}, XPath=//Name}"/>
<TextBox HorizontalAlignment="Right" VerticalAlignment="Top" Margin="80,0" Width="30"/>
<TextBox HorizontalAlignment="Right" VerticalAlignment="Top" Margin="80,50" Width="30"/>
<Label HorizontalAlignment="Right" VerticalAlignment="Top"
Content="{Binding ElementName=areaList, Path=SelectedValue}"/>
<Label HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,50" Content="Bind me?"/>
</Grid>
これは、ListBox
2つの要素、、、Item 1
およびaとaItem 2
を含む2つの行を含むことを示しています。プロパティをそれぞれにバインドし、選択したアイテムのプロパティをバインドすることはできますか?上記のコードは、選択したアイテムの値に1つをバインドします。これは、表示したい値ではないことを除いて、正しく機能します。私が本当に必要としているのは、XPathのソースを指定して一致する値を見つけることだと思いますが、最初にその比較を行う方法がわかりません。次に、より良い方法があるかどうかを知りたいと思います。まったく1つです。TextBox
Label
Label.Content
FirstProperty
SecondProperty
ListBox
Label
itemList
これが不可能な場合、私が考えることができる唯一の解決策は、SelectionChanged
イベントハンドラーでプログラム的に実行することです。それはうまくいくでしょうが、私はむしろそのような振る舞いを分割する必要はありません。