首页 > 解决方案 > WPF,将焦点设置在 TabControl 的内容上

问题描述

我想将焦点设置为TabControl当前选择TabItem的内容。

我正在通过 绑定项目ItemsSource,因此我无法简单地访问TabItems 本身;

我也不能调用Focus()TabControl因为它关注的是TabControl自身而不是其内容(为此我做了一个粗略但有效的检查 - 制作了一个 DispatcherTimer,它每秒发出一次当前关注的项目)。

实际上,我想达到与单击当前选定选项卡的标题相同的效果。我怎么能做到这一点(当然不是通过模拟点击来做那么快速和肮脏的事情)?

标签: wpffocustabcontrol

解决方案


您可以扩展您的TabControl并覆盖该OnSelectionChanged方法。

protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
    //TODO: Ignore this event on load.

    if (e.AddedItems.Count > 0)
        ((e.AddedItems[0] as TabItem)?.Content as UIElement)?.Focus();

    base.OnSelectionChanged(e);
}

推荐阅读