当Tab控件中的selectedindex选项卡更改时,如何自动移动焦点?

时间:2015-01-23 07:09:35

标签: c# wpf

我有这样的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>

视图可以是这样的。 tabcontrol

在我的UserControl我有很多控件,例如Hal 12,Textboxes哈拉曼内有很多Usercontrol,所以我想问一下如何才能自动改变键盘对改变的关注{{1}索引到所选标签中的第一个Tabcontrol

当键盘的焦点到达该页面中的最后一个控件时,我还必须移动到下一个Textbox

任何人都可以帮忙吗?

1 个答案:

答案 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);
}

这应该可以正常工作。