TOC

This article has been localized into Italian by the community.

Concetti dei controlli:

Ordine di Tab

Se hai lavorato abbastanza a lungo con un computer, da voler imparare a programmare, probabilmente sai anche che puoi usare il tasto Tab sulla tastiera per navigare attraverso una finestra / finestra di dialogo. Questo ti permette di tenere le mani sulla tastiera quando compili un modulo o qualcosa di simile, invece di dover usare il mouse per selezionare il prossimo campo / controllo.

WPF supporta questo comportamento, e ancora meglio: stabilirà automaticamente l'ordine utilizzato quando si passa da un campo a un altro, quindi in generale non ci si deve preoccupare affatto di questo. Tuttavia, a volte il design della finestra / finestra di dialogo fa sì che WPF utilizzi un ordine di tabulazione con cui potresti non essere d'accordo, per vari motivi. Inoltre, potresti decidere che determinati controlli non dovrebbero far parte dell'ordine di tabulazione. Consentitemi di illustrare questo con un esempio:

La sua finestra di dialogo consiste in una griglia, divisa in mezzo, con uno StackPanel su ciascun lato, contenente etichette e caselle di testo. Il comportamento predefinito dell'ordine di tabulazione inizia con il primo controllo della finestra e quindi passa attraverso ciascuno dei controlli figlio trovati al suo interno, prima di passare al controllo successivo. Poiché la finestra di dialogo è costituita da StackPanel orientati verticalmente, ciò significherebbe che dovremmo iniziare nel campo First name e quindi passare al campo Street name e quindi alla City , prima di passare allo StackPanel numero due, contenente i campi per Last name e Zip code. Una volta usciti dalsecondo StackPanel, i due pulsanti saranno finalmente raggiunti.

Tuttavia, per questa finestra di dialogo, non è questo il comportamento che voglio. Invece desidero passare da First name a Last name (quindi fondamentalmente muovendo orizzontalmente anziché verticalmente), e per di più, non voglio passare a City quando si fa tabulazione nel modulo, poiché questo verrà automaticamente riempito in base al Zip code in questa finestra di dialogo immaginaria ed è stato quindi reso di sola lettura. Per ottenere tutto ciò, utilizzerò due proprietà: TabIndex e IsTabStop . TabIndex viene utilizzato per definire l'ordine, mentre la proprietà IsTabStop imporrà a WPF di saltare un controllo durante la tabulazione attraverso la finestra. Ecco la marcatura usata per creare la finestra di dialogo:

<Window x:Class="WpfTutorialSamples.Control_concepts.TabOrderSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfTutorialSamples.Control_concepts"
mc:Ignorable="d"
Title="TabOrderSample" Height="250" Width="400">
    <Grid Margin="20">
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="20" />
    <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel>
    <Label>First name:</Label>
    <TextBox TabIndex="0" />
    <Label>Street name:</Label>
    <TextBox TabIndex="2" />
    <Label>City:</Label>
    <TextBox TabIndex="5" IsReadOnly="True" IsTabStop="False" Background="Gainsboro" />
</StackPanel>
<StackPanel Grid.Column="2">
    <Label>Last name:</Label>
    <TextBox TabIndex="1" />
    <Label>Zip Code:</Label>
    <TextBox TabIndex="4" />
</StackPanel>
<Button Grid.Row="1" HorizontalAlignment="Right" Width="80">Add</Button>
<Button Grid.Row="1" Grid.Column="2" HorizontalAlignment="Left" Width="80">Cancel</Button>
    </Grid>
</Window>

Osserva come assegno semplicemente a ciascun controllo pertinente un numero nella proprietà TabIndex e quindi utilizzo IsTabStop per il TextBox utilizzato per la città: è così semplice controllare l'ordine di tabulazione in una finestra di dialogo!

Sommario

Controllare l'ordine di tabulazione di una finestra di dialogo è molto importante, ma fortunatamente per noi, WPF fa un ottimo lavoro nel definire automaticamente un ordine di tabulazione adeguato. Tuttavia, in alcuni casi, ha senso entrare e assumere il controllo, utilizzando le proprietà TabIndex e IsTabStop , come illustrato sopra nell'esempio.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!