我有两个TabItem
包含在一个TabControl
中。
每个TabItem
都包含几个TextBox
。
当TabControl
的OnSelectionChanged
事件被触发时,除了选择新的TabItem
之外,它还会将焦点设置在新选择的项目中第一个TextBox
上。
有没有办法防止这种情况发生?
在TextBox
上设置IsTabStop="False"
可以实现此目的,但不幸的是也会阻止TextBox
被“tabbed”到。
在您的选项卡控件中,对每个选项卡处理焦点事件,像这样:
<TabItem GotFocus="TabItem_OnGotFocus">
private void TabItem_OnGotFocus(object sender, RoutedEventArgs e)
{
Keyboard.ClearFocus();
}
只需将容器添加到您的内容中,例如Grid、Stackpanel、Border等,并将其设置为Focusable。当Tab选择更改时,焦点将设置为容器,您也可以使用Tab键。
<TabItem Header="myHeader">
<StackPanel Focusable="True">
...
</StackPanel>
</TabItem>
@shannon,这是关于MVVM的问题的答案。
<TextBox Width="0" MinWidth="0" MaxWidth="0"></TextBox>
可以 - 尽管感觉有点 hacky! - maxp