我有一个tabcontrol,它绑定到一个可观察的标签集合 .
tabcontrol始终具有第一个选项卡,该选项卡承载绑定到另一个可观察集合的列表视图 .
在选择该列表视图中的项目时,将创建一个新选项卡,并为其提供焦点 .
我遇到的问题是:
-
当我切换回第一个标签时,在重绘/创建列表视图项目时会暂停一下(包含图像很慢)
-
在移动到新选项卡之前选择的项目不再选中 . 相反,列表视图位于顶部,未选择任何项目 .
有人可以向我解释一下tabcontrol是如何运作的,它是否真的每次都会破坏标签项内容?以及当我返回到该标签时,我如何能够保持选择项目的行为?
Update:
我已经通过向事件中添加调试打印消息来确认,这些事件在此交换机上没有事件触发,但第一个选项卡正在卸载 - 更具体地说,该选项卡中托管的用户控件是?? .
2 回答
听起来像ObservableCollection是罪魁祸首 . 如果要更改集合项以控制显示,那么每次集合更改时都不会重绘整个选项卡集合?
相反,为什么不直接维护TabItem集合?然后,您可以管理TabItems的Visibility属性以显示它们 .
首先,我需要确保我的listview正确绑定到我的集合,即通过添加属性保持选择项目:
然后我向listview添加了一个加载的事件处理程序,以便在切换回时将项目滚动到视图中: