2016-11-09 33 views
1

我使用的是MahApps的NumericUpDown控件,因为它的+/-按钮以及设置最大/最小允许值的能力。我现在需要以某种方式限制可输入到框中的字符数量。设置MahApps NumericUpDown控件的最大字符数

对于标准TextBox,这将使用MaxLength属性完成,但该属性对于NumericUpDown控件不存在。

我错过了什么吗?有其他方法可以实现吗?

回答

1

不,没有这样的属性,但是您可以轻松地扩展NumericUpDown并添加它。顺便说一句,当你专注时,它会检查最大允许值和输入值。

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控制接受MaximumMinimum参数,

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

如果找不到它们,请尝试更新MahApps的NuGet包。

相关问题