如何获取TabControl的TabItems,它的ItemsSource绑定到列表中?

如何获取TabControl的TabItems,它的ItemsSource绑定到列表中?

问题描述:

我有了标签绑定到一个列表一个TabControl:如何获取TabControl的TabItems,它的ItemsSource绑定到列表中?

<TabControl ItemsSource="{Binding SomeList}" /> 

如何才能找到的TabItem的实例?我发现了其他答案,建议查看TabControl.Items列表,但该列表充满了Foos。任何想法?

+0

正在使用ItemTemplate的任何帮助吗? – alf 2012-03-08 20:19:19

这个问题经常被问到,答案总是:不要这样做。

从理论上讲,你不应该需要TabItem实例,因为你要捆绑你需要修改的一切。 (理论上你也可以使用ItemContainerGenerator得到实例)

+0

我有tabcontrol绑定,使一些tabitems的可见性可能切换到折叠。如果这是选定的选项卡,我最终会看到一个选项卡控件,看起来没有选中选项卡。我想永远不会在这种情况下结束。我会看看我能否想出更具约束力的解决方案。 – 2012-03-08 21:08:36

+0

如果它是您需要的标签内容中的控件,该怎么办?例如,选项卡2有一个列表框控件,我要抓取选定的项目?当基于另一个绑定集合生成选项卡时,我无法将选定项绑定到视图模型上的集合。或者我可以吗? – Sinaesthetic 2015-09-15 02:43:24

+0

@Sinaesthetic:您通常通过将单个项目的“IsSelected”属性绑定到项目的模型/视图模型来绑定选定的项目,然后您只需通过绑定属性过滤集合。 – 2015-09-16 12:27:05

很久以前我在wpf中有一个和treeview类似的问题。我用ItemContainerGenerator解决了它。如果你想你可以看看我的解决方案,也许它可以帮助你解决你的问题:How to select a databound TreeViewItem?

但是我想H.B.是正确的:“[..]你不应该需要TabItem实例,因为你应该绑定你需要的所有东西[..]”

例如,如果您需要获取与SelectedItem相关的实际TabItem (这是一个绑定的对象)你可以使用ItemContainerGenerator HB提到

var tabItem = this.ItemContainerGenerator.ContainerFromItem(selectedObject); 
+3

谢谢你真的回答这个问题,而不是说他们没有人应该这样做。在我的情况下,我想在用户对其中一个选项卡进行更改时禁用其他选项卡(不禁用内容)。 – 2015-11-05 18:56:54