首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制Xamarin.Forms中输入字段的输入长度和字符

限制Xamarin.Forms中输入字段的输入长度和字符
EN

Stack Overflow用户
提问于 2014-08-02 02:56:35
回答 10查看 43.8K关注 0票数 27

如何在Xamarin.Forms的条目控件中限制输入的长度和字符。是否需要创建自定义控件?有没有一种方法可以从Entry (或另一个控件)派生,这样我就可以对每个平台应用必要的输入限制。

例如,将数值字段限制为最多3个字符,仅限数字。

将Entry控件的Keyboard属性设置为Keyboard.Numeric仅为iOS设置键盘。它不限制实际的文本输入-即我仍然可以输入非数字字符。我也看不到限制参赛作品长度的方法。

EN

回答 10

Stack Overflow用户

发布于 2014-08-04 23:54:58

您可以限制输入字段中的字符数量,如下所示:

代码语言:javascript
复制
  int restrictCount = <your restriction length> //Enter your number of character restriction
  Entry entry = new Entry();
  entry.TextChanged += OnTextChanged;

  void OnTextChanged(object sender, EventArgs e)
  {
    Entry entry = sender as Entry;
    String val = entry.Text; //Get Current Text

    if(val.Length > restrictCount)//If it is more than your character restriction
    {
     val = val.Remove(val.Length - 1);// Remove Last character 
     entry.Text = val; //Set the Old value
    }
  }
票数 18
EN

Stack Overflow用户

发布于 2016-03-14 02:54:46

您可以只使用绑定;例如,我想保存一个不能超过100的付款值。所以我写了一个类

代码语言:javascript
复制
puclic class Payment : INotifyPropertyChanged
{
    private int _amountDecimals;
    public int AmountDecimals
    {
        get
        {
            return _amountDecimals;
        }

        set
        {
            if (value <= 100)
            {
                _amountDecimals = value;
            }
            OnPropertyChanged();
        }
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

因此,如果用户输入一个值,直到值不超过100,此属性将设置AmountDecimals值

然后只需通过页面构造函数上的代码(或从xaml)设置绑定

代码语言:javascript
复制
var myPayment =new Payment(); //this will hold page(view) data
BindingContext = myPayment;
var paymentEntry = new Entry();
paymentEntry.Keyboard = Keyboard.Numeric;
paymentEntry.SetBinding(Entry.TextProperty, "AmountDecimals");            

因此,用户在条目中输入一个数值,但如果他/她尝试输入一个大于100的值,则绑定只是将其反转为旧值。你可以像这样(在setter上)将你的代码写到你的类的属性中。因此,如果你想让某些属性只包含5个字符,你可以这样写(代码可能是错误的,我没有编译它们:)

代码语言:javascript
复制
    private string _name;
    public string Name
    {
        get
        {
            return _name;
        }

        set
        {
            if ((value!= null && value.length <= 5) || value == null)
            {
                _name = value;
            }
            OnPropertyChanged();
        }
票数 9
EN

Stack Overflow用户

发布于 2015-06-24 03:54:50

我使用了一个自定义entry控件,该控件具有大写和最大长度的Bindable属性。

控件(MyEntry.cs)

代码语言:javascript
复制
class NewPaymentEntry : Entry
{
   public NewPaymentEntry()
    {
        base.TextChanged += EditText;
    }
    public void EditText(object sender, TextChangedEventArgs args)
    {
        Entry e = sender as Entry;
        String val = e.Text;

        if (string.IsNullOrEmpty(val))
            return;

        if (Uppercase )
            val = val.ToUpper();

        if(MaxLength > 0 && val.Length > MaxLength)
        {
                val = val.Remove(val.Length - 1);
        }
        e.Text = val;

    }

    public static readonly BindableProperty UppercaseProperty = BindableProperty.Create<MyEntry, bool>(p => p.Uppercase, false);

    public bool Uppercase
    {
        get
        {
            return (bool)GetValue(UppercaseProperty);
        }
        set
        {
            SetValue(UppercaseProperty, value);
        }
    }

    public static readonly BindableProperty MaxLengthProperty = BindableProperty.Create<MyEntry, int>(p => p.MaxLength, 0);

    public int MaxLength
    {
        get
        {
            return (int)GetValue(MaxLengthProperty);
        }
        set
        {
            SetValue(MaxLengthProperty, value);
        }
    }
}

从xaml调用它,比如

代码语言:javascript
复制
                  <MyEntry  Text="{Binding MyBindingProp}"
                            Uppercase="True"
                            MaxLength="11"/>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25086881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档