2016-11-09 65 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包。

相關問題