1

这是 XML:

<Items>
    <Item>
        <Name>Item1</Name>
        <Links>
            <Link>
                <LinkText>Image 1</LinkText>
                <LinkUri>Images/Image1.jpg</LinkUri>
            </Link>
            <Link>
                <LinkText>Image 2</LinkText>
                <LinkUri>Images/Image2.jpg</LinkUri>
            </Link>
        </Links>
    </Item>
    <Item>
        <Name>Item2</Name>
        <Links>
            <Link>
                <LinkText>Image 3</LinkText>
                <LinkUri>Images/Image3.jpg</LinkUri>
            </Link>
            <Link>
                <LinkText>Image 4</LinkText>
                <LinkUri>Images/Image4.jpg</LinkUri>
            </Link>
        </Links>
    </Item>
</Items>

这是第一个的绑定ListBox

<Grid.Resources>
        <XmlDataProvider
            x:Key="Items"
            Source="ScannerProblems.xml"
            XPath="Items" />            
</Grid.Resources>

<ListBox
                x:Name="lstProblems"
                Grid.Row="0"
                Grid.RowSpan="3"
                Grid.Column="0"
                IsSynchronizedWithCurrentItem="True"
                ItemsSource="{Binding Source={StaticResource Items}, XPath=Item}"
                DisplayMemberPath="{Binding}">
                <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border
                        Background="#2200FF00"
                        BorderBrush="Black"
                        BorderThickness="1"
                        CornerRadius="8"
                        Margin="2,4,2,4"
                        Padding="4">

                        <StackPanel
                            x:Name="sp">
                            <TextBlock
                                FontWeight="Bold">Problem Description</TextBlock>

                            <TextBlock
                                Width="{Binding ElementName=sp, Path=ActualWidth}"
                                Text="{Binding XPath=Name}"
                                TextWrapping="Wrap" />
                        </StackPanel>
                    </Border>
                    </DataTemplate>
                </ListBox.ItemTemplate>

                <ListBox.ItemContainerStyle>
                    <Style
                        TargetType="ListBoxItem">
                        <Setter
                            Property="HorizontalContentAlignment"
                            Value="Stretch" />
                    </Style>
                </ListBox.ItemContainerStyle>
            </ListBox>

所以ListBox我从中选择一个项目。当我选择该项目时,我希望另一个ListBox填充该选定项目的 XML 中的链接项目。看起来它应该是小菜一碟,但我尝试过的不同事情给了我一个空ListBoxSystem.Windows.DataTemplateListBox(只有一次,不是时间列表)。

编辑:从这里开始,我已经修改了。ListBox这是进行建议更改后的第二个标记。对于将来使用此问题的人来说,现在看起来是这样的:

<ListBox
            DataContext="{Binding SelectedItem, ElementName=lstProblems}"
            ItemsSource="{Binding XPath=Links/Link}"
            Grid.Row="1"
            Grid.Column="1"
            Grid.ColumnSpan="2"
            IsSynchronizedWithCurrentItem="False">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding}">
                        <Button.ContentTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <Image
                                        Margin="10"
                                        MaxHeight="200"
                                        Source="{Binding XPath=LinkUri}" />

                                    <TextBlock
                                        Text="{Binding XPath=LinkText}"
                                        TextWrapping="Wrap"
                                        Margin="10,0,10,20" />
                                </StackPanel>
                            </DataTemplate>
                        </Button.ContentTemplate>
                    </Button>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
4

1 回答 1

1

DataTemplate应该进入 <ListBox.ItemTemplate>第二个列表。目前,您将其直接设置在其下,这就是您看到类名的原因。由于您DataContext直接使用集合设置,因此您必须设置ItemsSource={Binding}

于 2013-09-10T14:55:46.803 回答