WPF Maintain ListBox selection when tab changes
我有一个TabControl,其中每个TabItem的内容都是主从视图。
对于主版本,我正在使用一个列表框,该列表框的
当我切换到另一个选项卡然后返回到原始选项卡时,列表框选择似乎丢失了。
我能做些什么,以保持在每个选项卡时,选项卡选择更改列表框中选择?
在正常使用情况下,最终用户将需要按照自己喜欢的方式"设置"详细视图,然后不时循环浏览选项卡以检查每个系统(每个选项卡提供了不同机器上的详细信息)生产线)。
TabControl看起来像这样:
1 2 3 4 | <TabControl ItemsSource="{Binding DiagCards}" ContentTemplate="{StaticResource DiagCardViewTemplate}" SelectedItem="{Binding SelectedDiagCard}" /> |
每个TabItem的视图都有一个如下所示的ListBox:
1 2 3 | <ListBox ItemsSource="{Binding DiagCard.DevicesDetected}" SelectedItem="{Binding SelectedDevice}"/> |
使用ContentControl在TabItem中显示详细信息:
1 2 3 | <ContentControl Content="{Binding SelectedDevice}" ContentTemplateSelector="{StaticResource SelectedDeviceTemplateSelector}"/> |
我要指出,使用硬编码的TabItems和列表框一个简单的测试似乎并维护该选择当标签的变化:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <TabControl> <TabItem Header="tab 1"> <ListBox> <ListBoxItem> <TextBlock Text="item 1-1"/> </ListBoxItem> <ListBoxItem> <TextBlock Text="item 1-2"/> </ListBoxItem> </ListBox> </TabItem> <TabItem Header="tab 2"> <ListBox> <ListBoxItem> <TextBlock Text="item 2-1"/> </ListBoxItem> <ListBoxItem> <TextBlock Text="item 2-2"/> </ListBoxItem> </ListBox> </TabItem> </TabControl> |
更新:我在列表框中设置了
根据您的评论,我想您的视图模型中发生了一些变化,以删除所选项目。您可以在SelectedDevice的设置器上设置断点并检查调用堆栈吗?
要测试是否可以删除SelectedItem = {}代码,并在更改选项卡时查看它是否保持选中状态?
要更完整地回答,我需要查看更多代码。