Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 设置MahApps NumericUpDown控件的最大字符数_Wpf_Mahapps.metro_Numericupdown - Fatal编程技术网

Wpf 设置MahApps NumericUpDown控件的最大字符数

Wpf 设置MahApps NumericUpDown控件的最大字符数,wpf,mahapps.metro,numericupdown,Wpf,Mahapps.metro,Numericupdown,我正在使用MahApps提供的NumericUpDown控件,因为它有+/-按钮和设置最大/最小允许值的功能。我现在需要以某种方式限制输入框中的字符数 对于标准的TextBox可以使用MaxLength属性来完成,但是NumericUpDown控件不存在此属性 我错过什么了吗?是否有其他方法可以实现这一点?不,没有这样的属性,但您可以轻松地扩展NumericUpDown并添加它。顺便说一句,当你聚焦时,它会检查最大允许值和输入值 C# XAML <ctrl:ExtendedNumericU

我正在使用MahApps提供的
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;
}
}