我有一个TabControl,其中每个TabItem的内容都是一个主细节视图。
对于主程序,我使用的是一个列表框,它的ItemsSource绑定到我的ViewModel中的集合。从列表中选择一项将显示该特定项的详细信息,并将其显示在网格中。
当我切换到另一个选项卡,然后返回到原始选项卡时,列表框选择似乎丢失了。
当选项卡选择更改时,如何维护每个选项卡中的列表框选择?
在正常使用中,最终用户将需要“设置”特定情况下他们喜欢的详细视图,然后偶尔通过选项卡来检查每个系统(每个选项卡为不同生产线上的机器提供详细信息)。
TabControl看起来如下所示:
<TabControl
ItemsSource="{Binding DiagCards}"
ContentTemplate="{StaticResource DiagCardViewTemplate}"
SelectedItem="{Binding SelectedDiagCard}" />每个TabItem的视图都有一个ListBox,如下所示:
<ListBox
ItemsSource="{Binding DiagCard.DevicesDetected}"
SelectedItem="{Binding SelectedDevice}"/>详细信息在TabItem中使用ContentControl显示:
<ContentControl
Content="{Binding SelectedDevice}"
ContentTemplateSelector="{StaticResource SelectedDeviceTemplateSelector}"/>我应该注意到,使用硬编码的TabItems和ListBoxes进行的简单测试似乎在选项卡更改时维护了所选内容:
<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>Update:我在列表框上设置了IsSynchronizedWithCurrentItem="True",看起来一切都很好。
发布于 2009-12-22 21:47:33
根据您的评论,我想您的视图模型中有一些东西正在改变,以删除所选的项。您能在SelectedDevice的设置器上设置一个断点并检查调用堆栈吗?
若要测试是否可以删除SelectedItem={}代码,并在更改选项卡时查看它是否保持选中?
要回答得更完整,我需要看到更多的代码。
https://stackoverflow.com/questions/1948698
复制相似问题