Lors de l'Utilisation de DependencyProperty, nous pouvons définir la maxlength de la zone de liste modifiable sans avoir à modifier votre style/modèle.
publicclassEditableComboBox{publicstaticintGetMaxLength(DependencyObject obj){return(int)obj.GetValue(MaxLengthProperty);}publicstaticvoidSetMaxLength(DependencyObject obj,int value){
obj.SetValue(MaxLengthProperty, value);}//Using a DependencyProperty as the backing store for MaxLength. This enables animation, styling, binding, etc...publicstaticreadonlyDependencyPropertyMaxLengthProperty=DependencyProperty.RegisterAttached("MaxLength",typeof(int),typeof(EditableComboBox),newUIPropertyMetadata(OnMaxLenghtChanged));privatestaticvoidOnMaxLenghtChanged(DependencyObject obj,DependencyPropertyChangedEventArgs args){var comboBox = obj asComboBox;if(comboBox ==null)return;
comboBox.Loaded+=(s, e)=>{var textBox = comboBox.FindChild(typeof(TextBox),"PART_EditableTextBox");if(textBox ==null)return;
textBox.SetValue(TextBox.MaxLengthProperty, args.NewValue);};}}
Ou vous pouvez utiliser le GotFocus ou Chargé cas de la zone de liste déroulante pour le réglage de la maxlength.Si le maxlength fais trop de modifications en cours d'exécution, vous pouvez utiliser chargé événement ou d'autre événement gotfocus
Vous sont corrects. Il y a un maxlength pour une zone de texte, mais pas pour une zone de liste déroulante. Vous devez faire tourner votre propre en utilisant une zone de texte comme un intermédiaire. Voici un code:
J'ai utilisé PreviewKeyDown événement, très simple + vous pouvez afficher l'avertissement ou quelque chose.
Enregistrer la méthode ci-dessous votre zone de liste déroulante.PreviewKeyDown += événement,
L'événement KeyDown ne se déclenchera pas si l'utilisateur appuyez sur la touche Espace.
privatevoidComboBox_PreviewKeyDown(object sender,KeyEventArgs e){if(ComboBox.Text.Length>19)//allow max 20 chars{if(e.Key!=Key.Back)//allow removing chars{
e.Handled=true;//block any additional key press if there is more than allowed maxSystem.Media.SystemSounds.Beep.Play();//optional: beep to let user know he is out of space :)}}}
J'ai trouvé la solution facile via XAML. Dans la zone de liste déroulante des ressources, nous pouvons définir le style de zone de texte et via setter ensemble maxlenth.
Lors de l'Utilisation de DependencyProperty, nous pouvons définir la maxlength de la zone de liste modifiable sans avoir à modifier votre style/modèle.
Exemple d'utilisation:
Où ComboboxHelper est:
zone de liste déroulante.FindChild(...) méthode est affiché ici.
OriginalL'auteur Tri Q Tran
Ou vous pouvez utiliser le GotFocus ou Chargé cas de la zone de liste déroulante pour le réglage de la maxlength.Si le maxlength fais trop de modifications en cours d'exécution, vous pouvez utiliser chargé événement ou d'autre événement gotfocus
et à l'événement en question...
OriginalL'auteur biju
Vous sont corrects. Il y a un maxlength pour une zone de texte, mais pas pour une zone de liste déroulante. Vous devez faire tourner votre propre en utilisant une zone de texte comme un intermédiaire. Voici un code:
OriginalL'auteur Rap
Cette zone de texte est à venir null.
Le style est donné comme suit.
OriginalL'auteur Ershad
J'ai utilisé PreviewKeyDown événement, très simple + vous pouvez afficher l'avertissement ou quelque chose.
Enregistrer la méthode ci-dessous votre zone de liste déroulante.PreviewKeyDown += événement,
L'événement KeyDown ne se déclenchera pas si l'utilisateur appuyez sur la touche Espace.
OriginalL'auteur Mr. Noob
J'ai trouvé la solution facile via XAML. Dans la zone de liste déroulante des ressources, nous pouvons définir le style de zone de texte et via setter ensemble maxlenth.
EDIT: Cela fonctionne avec Actipro zone de liste déroulante. Pour habitude zone de liste déroulante pour faire ce travail, avoir un regard ici
OriginalL'auteur Sasha