简体   繁体   中英

WPF TabIndex not working for TabControl

I have a window with a TabControl and inside the TabControl a TextBox.

The TabOrder isn't doing what it should do the way I set the TabIndexes.
It goes to the TabItem and the TextBox inside after the CheckBox and the Button.

    <Grid HorizontalAlignment="Left" Height="140" Margin="10,570,0,0" VerticalAlignment="Top" Width="290">
        <TextBlock x:Name="reasonBlock" HorizontalAlignment="Left" Margin="0,10,0,0" TextWrapping="Wrap" Text="Grund:" VerticalAlignment="Top" FontSize="14"/>
        <TextBox x:Name="reasonBox" HorizontalAlignment="Left" Height="106" Margin="0,34,0,0" VerticalAlignment="Top" Width="290" AcceptsReturn="True" HorizontalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto" MaxWidth="389" TextWrapping="Wrap" TabIndex="10"/>
    </Grid>

    <Grid x:Name="typeGrid" HorizontalAlignment="Left" Height="170" Margin="320,540,0,0" VerticalAlignment="Top" Width="389">
        <TextBlock x:Name="typeBlock" HorizontalAlignment="Left" Margin="0,10,0,0" TextWrapping="Wrap" Text="Art der Änderung:" VerticalAlignment="Top" FontSize="14"/>
        <TabControl x:Name="typeControl" HorizontalAlignment="Left" Height="136" Margin="0,34,0,0" VerticalAlignment="Top" Width="389">
            <TabItem Header="Allgemein" TabIndex="19">
                <Grid Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
                    <TextBox x:Name="typeBox" HorizontalAlignment="Left" Height="101" VerticalAlignment="Top" Width="379" AcceptsReturn="True" HorizontalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto" MaxWidth="379" TextWrapping="Wrap" TabIndex="20"/>
                </Grid>
            </TabItem>
        </TabControl>
    </Grid>

    <Grid HorizontalAlignment="Left" Height="95" Margin="714,615,0,0" VerticalAlignment="Top" Width="126">
        <Button x:Name="createButton" Content="Erstellen" HorizontalAlignment="Right" Margin="0,70,0,0" VerticalAlignment="Top" Width="111" Click="createButton_Click" FontSize="14" BorderBrush="{DynamicResource ButtonBorderBrush}" TabIndex="101"/>
        <CheckBox x:Name="publicBox" Content="Veröffentlichen" HorizontalAlignment="Right" Margin="0,31,0,0" VerticalAlignment="Top" TabIndex="100"/>
    </Grid>

I fixed it by subscribing to the KeyDown event of the previous TextBox and then focusing the TabItem if the Tab Key is pressed.

    private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key != Key.Tab)
        {
            return;
        }
        else
        {
            TabItem tabItem = (TabItem)typeControl.SelectedItem;

            tabItem.Focus();

            e.Handled = true;
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM