我有这样的Tabcontrol
。
<TabControl SelectedIndex="{Binding SelectedTab}" Name="TabControlAll">
<TabItem Header="Hal 1" Style="{StaticResource AzureTabItem}">
<kor:Halaman1 DataContext="{Binding RTDetail}"/>
</TabItem>
<TabItem Header="Hal 2" Style="{StaticResource AzureTabItem}" >
<kor:Halaman2 />
</TabItem>
<TabItem Header="Hal 3" Style="{StaticResource AzureTabItem}">
<kor:Halaman3/>
</TabItem>
<TabItem Header="Hal 4" Style="{StaticResource AzureTabItem}">
<kor:Halaman4/>
...
</TabControl>
视图可以是这样的。
在我的UserControl
我有很多控件,例如Hal 12,Textboxes
哈拉曼内有很多Usercontrol
,所以我想问一下如何才能自动改变键盘对改变的关注{{1}索引到所选标签中的第一个Tabcontrol
?
当键盘的焦点到达该页面中的最后一个控件时,我还必须移动到下一个Textbox
。
任何人都可以帮忙吗?
答案 0 :(得分:1)
当按下Tab键时,此事件处理程序将焦点移动到下一个TabItem。
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Tab)
tabControl.SelectedIndex = (tabControl.SelectedIndex + 1) % tabCount;
}
移动焦点后,您可以将此事件处理程序设置为标签项中的最后一个控件。这将把第一个控件集中在选定的TabItem中。您可以将元素替换为第一个控件的名称。
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
element.Dispatcher.BeginInvoke(new Action<UIElement>(x =>
{
x.Focus();
}), DispatcherPriority.ApplicationIdle, element);
}
这应该可以正常工作。