C# Tabitem.focus仅关注Tabitem标题

C# Tabitem.focus仅关注Tabitem标题,c#,silverlight,observablecollection,tabitem,C#,Silverlight,Observablecollection,Tabitem,嘿。我有一个绑定到可观察集合的tabcontrol 我试过了 var tabitem = (TabItem)this.SingleOrDefault(ti => ti.Name == tabname); tabitem.Focus(); ((UserControl)tabitem.Content).Focus(); 它看起来确实关注tabitem,但只关注tabitem头中的btn,而不是内容。tabitem内容是另一个usercontrol 如何将焦点更改为内容,使选项

嘿。我有一个绑定到可观察集合的tabcontrol

我试过了

var tabitem = (TabItem)this.SingleOrDefault(ti => ti.Name == tabname);
    tabitem.Focus();
    ((UserControl)tabitem.Content).Focus();
它看起来确实关注tabitem,但只关注tabitem头中的btn,而不是内容。tabitem内容是另一个usercontrol

如何将焦点更改为内容,使选项卡实际上处于选中状态,而不仅仅是tabheader


我知道tabcontrol.selecteditem,但我不确定如何实现它,因为observablecollection实际上是一个我称之为ObservableTabCollection的类,它只实现observablecollection。

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

我的解决方案是在ObservateTabCollection上创建一个将tabcontrol与ObservateTabCollection关联的方法

public TabControl AssociatedTabControl;

internal void BindToTabControl(TabControl TabCtrl)
        {
            AssociatedTabControl = TabCtrl;
        }
然后在方法调用中

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

嗨,斯蒂芬-谢谢你的回答。你能给出一些例子代码吗?它是在xaml中还是在代码背后?我更喜欢代码隐藏为什么你更喜欢代码隐藏?使用Silverlight的最大原因之一是尽可能避免使用代码隐藏。另外,我想我可能对你的应用程序是如何设置的有点困惑。TabControl从何处获取其TabItem?是绑定到其他控件还是绑定到代码背后的属性?