2016-11-09 3 views
1

Я использую управление от MahApps NumericUpDown из-за его кнопок +/- и установки максимального/минимального допустимого значения. Теперь мне нужно как-то ограничить количество символов, которые могут быть введены в поле.Установить максимальное количество символов для элемента управления MahApps NumericUpDown

Для стандарта TextBox это будет сделано с использованием MaxLength, но это свойство не существует для управления NumericUpDown.

Я что-то упустил? Есть ли другой способ достичь этого?

ответ

1

Нет, такого свойства нет, но вы можете легко расширить NumericUpDown и добавить его. BTW, когда вы фокусируетесь, он проверяет Максимальное допустимое значение и входное значение.

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

Контроль NumericUpDown принимает Maximum и Minimum аргументы,

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

Если вы не можете найти их, попробуйте обновить пакет NuGet от MahApps.

Смежные вопросы