我使用的是MahApps的NumericUpDown
控件,因爲它的+/-按鈕以及設置最大/最小允許值的能力。我現在需要以某種方式限制可輸入到框中的字符數量。設置MahApps NumericUpDown控件的最大字符數
對於標準TextBox
,這將使用MaxLength
屬性完成,但該屬性對於NumericUpDown
控件不存在。
我錯過了什麼嗎?有其他方法可以實現嗎?
我使用的是MahApps的NumericUpDown
控件,因爲它的+/-按鈕以及設置最大/最小允許值的能力。我現在需要以某種方式限制可輸入到框中的字符數量。設置MahApps NumericUpDown控件的最大字符數
對於標準TextBox
,這將使用MaxLength
屬性完成,但該屬性對於NumericUpDown
控件不存在。
我錯過了什麼嗎?有其他方法可以實現嗎?
不,沒有這樣的屬性,但是您可以輕鬆地擴展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"/>
的NumericUpDown
控制接受Maximum
和Minimum
參數,
<Controls:NumericUpDown Minimum="0" Maximum="{Binding TotalPages}"/>
如果找不到它們,請嘗試更新MahApps的NuGet包。