using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace BookAStar.Behaviors { public class MaxLengthValidator : Behavior { public static readonly BindableProperty MaxLengthProperty = BindableProperty.Create("MaxLength", typeof(int), typeof(MaxLengthValidator), 0); public int MaxLength { get { return (int)GetValue(MaxLengthProperty); } set { SetValue(MaxLengthProperty, value); } } protected override void OnAttachedTo(Entry bindable) { bindable.TextChanged += bindable_TextChanged; } private void bindable_TextChanged(object sender, TextChangedEventArgs e) { //if (MaxLength != null && MaxLength.HasValue) if (e.NewTextValue.Length > 0 && e.NewTextValue.Length > MaxLength) ((Entry)sender).Text = e.NewTextValue.Substring(0, MaxLength); } protected override void OnDetachingFrom(Entry bindable) { bindable.TextChanged -= bindable_TextChanged; } } }