我使用的是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包。