Comment puis-je incorporer un onglet automatique lorsque la propriété MaxLength est atteinte dans un déclencheur XAML, DataTrigger, PropertyTrigger, Style.Trigger, etc. Voici deux de ces options pour savoir comment déjà accompli ceci avec un TextBox via code-behind. Je cherche à l'appliquer dans un style XAML. Merci.Onglet Auto déclencheur XAML lorsque MaxLength est atteint
XAML:
<TextBox x:Name="MyTextBox"
Text="{Binding Path=MyProperty}"
Style="{StaticResource TextBoxStyle}"
MaxLength="5"
TextChanged="MyTextBox_TextChanged">
</TextBox>
code-behind pour WPF:
private void MyTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (MyTextBox.Text.Length == MyTextBox.MaxLength)
{
Keyboard.Focus(NextTextBox);
}
}
private void MyTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
// Auto-tab when maxlength is reached
if (((TextBox)sender).MaxLength == ((TextBox)sender).Text.Length)
{
// move focus
var ue = e.OriginalSource as FrameworkElement;
e.Handled = true;
ue.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
}
Vous pouvez ajouter un déclencheur dans un modèle de contrôle pour une comparaison de longueur, mais il est impossible de déplacer un focus dans un xaml. Il n'y a rien de mal à utiliser le code-behind. – vorrtex
Je serais bien d'utiliser le code-behind, mais je veux l'appliquer à plusieurs vues et je pense qu'il vaut mieux utiliser une sorte de Trigger dans les styles. Pouvez-vous me montrer un exemple du modèle de contrôle que vous utiliseriez? – woodyiii