• 限制WPF textbox 字符最大值


    /// <summary>
    /// Set the maximum length of a TextBox based on any StringLength attribute of the bound property
    /// </summary>
    public class RestrictStringInputBehavior : Behavior<TextBox>
    {
        protected override void OnAttached()
        {
            AssociatedObject.Loaded += (sender, args) => setMaxLength();
            base.OnAttached();
        }
    
        private void setMaxLength()
        {
            object context = AssociatedObject.DataContext;
            BindingExpression binding = AssociatedObject.GetBindingExpression(TextBox.TextProperty);
    
            if (context != null && binding != null)
            {
                PropertyInfo prop = context.GetType().GetProperty(binding.ParentBinding.Path.Path);
                if (prop != null)
                {
                    var att = prop.GetCustomAttributes(typeof(StringLengthAttribute), true).FirstOrDefault() as StringLengthAttribute;
                    if (att != null)
                    {
                        AssociatedObject.MaxLength = att.MaximumLength;
                    }
                }
            }
        }
    }
    You can see, the behavior simply retrieves the data context of the text box, and its binding expression for "Text". Then it uses reflection to get the "StringLength" attribute. Usage is like this:
    <UserControl
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    
        <TextBox Text="{Binding SomeProperty}">
            <i:Interaction.Behaviors>
                <local:RestrictStringInputBehavior />
            </i:Interaction.Behaviors>
        </TextBox>
    
    </UserControl>
    

      

    <UserControl
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    
        <TextBox Text="{Binding SomeProperty}">
            <i:Interaction.Behaviors>
                <local:RestrictStringInputBehavior />
            </i:Interaction.Behaviors>
        </TextBox>
    
    </UserControl>
    

      

  • 相关阅读:
    FCC学习笔记(二)
    FCC学习笔记(一)
    jQuery(三)
    jQuery(二)
    jQuery(一)
    JavaScript(九)
    JavaScript(八)
    2-1回归算法
    14-章小结
    13-模型训练及测试
  • 原文地址:https://www.cnblogs.com/canyuexingchen/p/8110320.html
Copyright © 2020-2023  润新知