Wpf 设置MahApps NumericUpDown控件的最大字符数
我正在使用MahApps提供的Wpf 设置MahApps NumericUpDown控件的最大字符数,wpf,mahapps.metro,numericupdown,Wpf,Mahapps.metro,Numericupdown,我正在使用MahApps提供的NumericUpDown控件,因为它有+/-按钮和设置最大/最小允许值的功能。我现在需要以某种方式限制输入框中的字符数 对于标准的TextBox可以使用MaxLength属性来完成,但是NumericUpDown控件不存在此属性 我错过什么了吗?是否有其他方法可以实现这一点?不,没有这样的属性,但您可以轻松地扩展NumericUpDown并添加它。顺便说一句,当你聚焦时,它会检查最大允许值和输入值 C# XAML <ctrl:ExtendedNumericU
NumericUpDown
控件,因为它有+/-按钮和设置最大/最小允许值的功能。我现在需要以某种方式限制输入框中的字符数
对于标准的TextBox
可以使用MaxLength
属性来完成,但是NumericUpDown
控件不存在此属性
我错过什么了吗?是否有其他方法可以实现这一点?不,没有这样的属性,但您可以轻松地扩展NumericUpDown并添加它。顺便说一句,当你聚焦时,它会检查最大允许值和输入值 C# XAML
<ctrl:ExtendedNumericUpDown Minimum="0" Maximum="100" MaxLenght="3"/>
不,没有这样的属性,但您可以轻松地扩展NumericUpDown并添加它。顺便说一句,当你聚焦时,它会检查最大允许值和输入值 C# XAML
<ctrl:ExtendedNumericUpDown Minimum="0" Maximum="100" MaxLenght="3"/>
NumericUpDown
控件接受最大值
和最小值
参数
<Controls:NumericUpDown Minimum="0" Maximum="{Binding TotalPages}"/>
如果找不到它们,请尝试更新MahApps的NuGet包。控件接受最大值和最小值参数
<Controls:NumericUpDown Minimum="0" Maximum="{Binding TotalPages}"/>
如果找不到它们,请尝试更新MahApps的NuGet包。基于@Alex的答案,您可以通过创建一个行为来更进一步。该行为可由许多不同类型的控件使用,您不需要子类化NumericUpDown
public class MaxCharactersBehavior : Behavior<UIElement>
{
public int MaxCharacters { get; set; }
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.PreviewTextInput += AssociatedObject_PreviewTextInput;
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.PreviewTextInput -= AssociatedObject_PreviewTextInput;
}
private void AssociatedObject_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = ((System.Windows.Controls.TextBox)e.OriginalSource).Text.Length >= MaxCharacters;
}
}
公共类MaxCharactersBehavior:行为
{
公共整型MaxCharacters{get;set;}
受保护的覆盖无效附加()
{
base.onatached();
AssociatedObject.PreviewTestInput+=AssociatedObject\u PreviewTestInput;
}
附加时受保护的覆盖无效()
{
base.OnDetaching();
AssociatedObject.PreviewTestInput-=AssociatedObject\u PreviewTestInput;
}
私有void关联对象\u预览输出(对象发送者,文本合成目标e)
{
e、 Handled=((System.Windows.Controls.TextBox)e.OriginalSource.Text.Length>=MaxCharacters;
}
}
基于@Alex的答案,您可以通过创建一个行为来更进一步。该行为可由许多不同类型的控件使用,您不需要子类化NumericUpDown
public class MaxCharactersBehavior : Behavior<UIElement>
{
public int MaxCharacters { get; set; }
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.PreviewTextInput += AssociatedObject_PreviewTextInput;
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.PreviewTextInput -= AssociatedObject_PreviewTextInput;
}
private void AssociatedObject_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = ((System.Windows.Controls.TextBox)e.OriginalSource).Text.Length >= MaxCharacters;
}
}
公共类MaxCharactersBehavior:行为
{
公共整型MaxCharacters{get;set;}
受保护的覆盖无效附加()
{
base.onatached();
AssociatedObject.PreviewTestInput+=AssociatedObject\u PreviewTestInput;
}
附加时受保护的覆盖无效()
{
base.OnDetaching();
AssociatedObject.PreviewTestInput-=AssociatedObject\u PreviewTestInput;
}
私有void关联对象\u预览输出(对象发送者,文本合成目标e)
{
e、 Handled=((System.Windows.Controls.TextBox)e.OriginalSource.Text.Length>=MaxCharacters;
}
}