【问题标题】:WPF Maintain ListBox selection when tab changesWPF 在选项卡更改时保持列表框选择
【发布时间】:2010-12-29 06:06:08
【问题描述】:

我有一个 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}"/>

使用 ContentControl 在 TabItem 中显示详细信息:

<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>

更新:我在列表框上设置了IsSynchronizedWithCurrentItem="True",一切似乎都很好。

【问题讨论】:

  • 当您说“列表框选择似乎丢失”时,您的意思是“详细信息”(内容控件)没有反映正确的列表框选择还是意味着列表框的选择栏根本看不到?
  • 假设我选择了列表中的第 3 项,然后切换到另一个选项卡。当我切换回第一个选项卡时,列表框中没有选择任何项目。我希望第三个项目保持选中状态。

标签: c# wpf xaml mvvm listbox


【解决方案1】:

根据您的评论,我猜您的视图模型中发生了一些变化以删除所选项目。你能在 SelectedDevice 的设置器上设置断点并检查调用堆栈吗?

要测试您是否可以删除 SelectedItem={} 代码并查看在您更改选项卡时它是否保持选中状态?

要更完整地回答,我需要查看更多代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    相关资源
    最近更新 更多