这是 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 中的链接项目。看起来它应该是小菜一碟,但我尝试过的不同事情给了我一个空ListBox
或System.Windows.DataTemplate
在ListBox
(只有一次,不是时间列表)。
编辑:从这里开始,我已经修改了。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>