2016-11-09 4 views
1

J'utilise le contrôle NumericUpDown de MahApps, en raison de ses boutons +/- et de la possibilité de définir la valeur maximale/minimale autorisée. J'ai maintenant besoin de limiter en quelque sorte le nombre de caractères, qui peut être entré dans la boîte.Définir le nombre maximum de caractères pour le contrôle NumericUpDown MahApps

Pour une norme TextBox, cela serait fait avec la propriété MaxLength, mais cette propriété n'existe pas pour le contrôle NumericUpDown.

Ai-je raté quelque chose? Y a-t-il un autre moyen d'y parvenir?

Répondre

1

Non, cette propriété n'existe pas, mais vous pouvez facilement étendre NumericUpDown et l'ajouter. BTW, lorsque vous vous concentrez, il vérifie la valeur maximale autorisée et la valeur d'entrée.

C#

using MahApps.Metro.Controls; 
    using System.Windows; 
    using System.Windows.Input; 

    namespace TestApp.Controls 
    { 
     class ExtendedNumericUpDown : NumericUpDown 
     { 
      public int MaxLenght 
      { 
       get { return (int)GetValue(MaxLenghtProperty); } 
       set { SetValue(MaxLenghtProperty, value); } 
      } 

      public static readonly DependencyProperty MaxLenghtProperty = 
       DependencyProperty.Register(nameof(MaxLenght), typeof(int), typeof(ExtendedNumericUpDown), new PropertyMetadata(10)); 


      protected override void OnPreviewTextInput(TextCompositionEventArgs e) 
      { 
       e.Handled = ((System.Windows.Controls.TextBox)e.OriginalSource).Text.Length >= MaxLenght; 

       base.OnPreviewTextInput(e); 
      } 
     } 
    } 

XAML

<ctrl:ExtendedNumericUpDown Minimum="0" Maximum="100" MaxLenght="3"/> 
1

Le contrôle NumericUpDown accepte Maximum et Minimum arguments,

<Controls:NumericUpDown Minimum="0" Maximum="{Binding TotalPages}"/> 

Si vous ne les trouvez pas, essayez de mettre à jour le paquet NuGet de MahApps.