2010-06-01 24 views
0

嘿。我有一个绑定到可观察集合的tabcontrol。Tabitem.focus只专注于tabitem标题

我试着做

var tabitem = (TabItem)this.SingleOrDefault(ti => ti.Name == tabname); 
    tabitem.Focus(); 
    ((UserControl)tabitem.Content).Focus(); 

而且它似乎是它的重点是TabItem的,但仅限于在的TabItem的头一个BTN,而不是内容。 tabitem内容是另一个用户控件。

我怎样才能对焦变化的内容,从而使标签确实被选中,而不仅仅是tabheader

我知道tabcontrol.selecteditem的,但IOM真的不知道我将如何实现这个作为observablecollection实际上是一个我称之为ObservableTabCollection的类,它实现了observable集合。

回答

0

我的解决方案变得简单地对将在TabControl的与observabletabcollection

public TabControl AssociatedTabControl; 

internal void BindToTabControl(TabControl TabCtrl) 
     { 
      AssociatedTabControl = TabCtrl; 
     } 

相关联,然后一个方法调用

if (AssociatedTabControl != null) AssociatedTabControl.SelectedItem = tabitem; 
0

绑定TabControl.SelectedItem双向到ObservableTabCollection中的特定TabItem。然后,您可以将绑定设置为您从ObservableTabCollection中拉出的任何项目,以使该选项卡成为显示的选项卡。

+0

斯蒂芬嗨内observabletabcollection创建一个方法 - 谢谢您的回答。你能展示一些示例代码吗?它会在xaml还是在代码隐藏?我宁愿在代码隐藏方面 – Jakob 2010-06-01 14:50:59

+0

为什么你更喜欢代码隐藏?使用Silverlight的最大原因之一是避免尽可能地使用代码隐藏。另外我想也许我对你的应用程序设置有点困惑。 TabControl从哪里获取它的TabItem?绑定到其他控件还是绑定到代码隐藏的属性? – Stephan 2010-06-01 15:10:48