TabItem OnSelectionChanged()设置关注于内部控制(WPF)

本文关键字:内部控制 WPF 设置 OnSelectionChanged TabItem | 更新日期: 2023-09-27 17:53:47

我有两个TabItem包含在一个TabControl中。

每个TabItem包含多个TextBox

TabControlOnSelectionChanged事件被触发时,除了选择新的TabItem,它还将焦点设置在新选中的项目中包含的第一个TextBox上。

有什么方法可以防止这种情况发生吗?

TextBox上设置IsTabStop="False"将实现这一点,但不幸的是也阻止了TextBox被"标签"到。

TabItem OnSelectionChanged()设置关注于内部控制(WPF)

在选项卡控件中,像这样处理每个选项卡的焦点事件:

<TabItem GotFocus="TabItem_OnGotFocus">

然后使用:

删除焦点
private void TabItem_OnGotFocus(object sender, RoutedEventArgs e)
{
    Keyboard.ClearFocus();
}

只需在你的内容中添加一个容器,如Grid, Stackpanel, Border等,并将其设置为可聚焦。当制表符选择改变时,焦点被设置为容器,您也可以使用制表符键。

<TabItem Header="myHeader">
    <StackPanel Focusable="True">
       ...    
    </StackPanel>
</TabItem>

@shannon它回答了你关于MVVM的问题