これは簡単だと思いますが、解決策が見つかりません。1 つの ListBox を使用してデータ ソース内の 2 つの配列にバインドするにはどうすればよいですか?
データのサンプルを次に示します。
<XmlDataProvider x:Key="ConfigurationData" XPath="Configuration/Component">
<x:XData>
<Configuration xmlns="">
<Component ID="2252371">
<ComponentAttribute ID="301080453">
<Name>ColorHexCodes</Name>
<Value />
<Values>
<Value>#FFFFFA</Value>
<Value>#FFFFFA</Value>
<Value>#FFFFFA</Value>
<Value>#FFFFFA</Value>
<Value>#FFFFFA</Value>
<Value>#FFFFFA</Value>
<Value>#A80000</Value>
<Value>#A80000</Value>
<Value>#A80000</Value>
<Value>#A80000</Value>
<Value>#A80000</Value>
<Value>#A80000</Value>
<Value>#D1D3D4</Value>
<Value>#D1D3D4</Value>
<Value>#D1D3D4</Value>
<Value>#D1D3D4</Value>
<Value>#D1D3D4</Value>
<Value>#D1D3D4</Value>
</Values>
</ComponentAttribute>
<ComponentAttribute ID="301080500">
<Name>ColorDescription</Name>
<Value />
<Values>
<Value>0010 - White</Value>
<Value>0010 - White</Value>
<Value>0010 - White</Value>
<Value>0010 - White</Value>
<Value>0010 - White</Value>
<Value>0010 - White</Value>
<Value>1902 - Red</Value>
<Value>1902 - Red</Value>
<Value>1902 - Red</Value>
<Value>1902 - Red</Value>
<Value>1902 - Red</Value>
<Value>1902 - Red</Value>
<Value>3971 - Silver</Value>
<Value>3971 - Silver</Value>
<Value>3971 - Silver</Value>
<Value>3971 - Silver</Value>
<Value>3971 - Silver</Value>
<Value>3971 - Silver</Value>
</Values>
</ComponentAttribute>
</Component>
</Configuration>
</x:XData>
</XmlDataProvider>
表示する必要があるのは、ColorDescription と ColorHexCodes を並べて表示するリストです。これら 2 つのコレクションは常に並べられます。
私はこれを思いつきました:
<ListBox Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="Auto" Width="Auto" Grid.ColumnSpan="2">
<ListBox.ItemsSource>
<Binding Source="{StaticResource ConfigurationData}" XPath="//ComponentAttribute[Name='ThreadDescription']/Values/*" />
</ListBox.ItemsSource>
<ListBox.ItemTemplate>
<DataTemplate x:Key="Swatch">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Height="20" FontSize="14" Foreground="CadetBlue">
<TextBlock.Text>
<Binding XPath="//ComponentAttribute[Name='ColorDescription']/Values/Value" />
</TextBlock.Text>
</TextBlock>
<TextBlock Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Height="20" Margin="20,0,0,0" FontSize="14" Foreground="CadetBlue">
<TextBlock.DataContext></TextBlock.DataContext>
<TextBlock.Text>
<Binding XPath="//ComponentAttribute[Name='ColorHexCodes']/Values/Value" />
</TextBlock.Text>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
正しい数の ListBoxItems をレンダリングしますが、各項目の最初の値のみを表示しています。どこが間違っていますか?私はこれが本当に簡単なものでなければならないことを知っています。