1

これは簡単だと思いますが、解決策が見つかりません。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 をレンダリングしますが、各項目の最初の値のみを表示しています。どこが間違っていますか?私はこれが本当に簡単なものでなければならないことを知っています。

4

1 に答える 1

0

両方のリストを保持できるComposite Collectionストレージの使用を調べますが、1 つのリストボックスにバインドされ、各項目タイプを具体的に処理するために使用されます。

MSDN へのリンクは、2 つの異なるデータ項目を 1 つの画面に表示する例を示しています。

于 2015-02-26T22:56:16.760 に答える