我有一个列表框,其中包含另一个lisbox。
<ListBox x:Name="listBoxParent">
<ListBox.ItemTemplate>
<DataTemplate>
<Image x:Name="thumbNailImagePath" Source="/this.jpg" Style="{StaticResource ThumbNailPreview}" />
<TextBlock Margin="5" Text="{Binding Smthing}" Style="{StaticResource TitleBlock_Artist}" />
</StackPanel>
<StackPanel Style="{StaticResource someStyle}" >
<ListBox x:Name="listBoxChild" Loaded="listBoxChild_Loaded" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Margin="5" Text="{Binding myText}" Width="300"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
</ListBox.ItemsPanel>
</ListBox>
现在,当我尝试将焦点集中到子列表框的第一项时,它会在第一个所有父项列表框的第1项上重新集中(因为它在父列表框中重复),希望我能提供一个屏幕截图以便更好地理解。但不能
public void listBoxChild_Loaded(object sender, RoutedEventArgs e)
{
var myListBox = (ListBox)sender;
myListBox .ItemsSource = PageVariables.eOUTData;//listboxSongsData;
myListBox .SelectedIndex = 0;
myListBox .Focus();
}
谢谢, Subhen
答案 0 :(得分:0)
很难确定您要在代码中尝试完成的任务。
一个想法: 您是否考虑过将内部ListBox更改为ItemsControl?如果您还需要滚动它,可以将其分层ScrollViewer。
第二个想法(可能是另一个想法): 项目模板中创建的每个项目都在调用Loaded事件。你不希望这只发生一次吗?从内部ListBox中删除事件,并在加载外部列表后设置焦点。