使用Xamarin.forms中的Entry属性检查以确保第一个输入数字为0

我需要检查用户输入的电话号码,该电话号码从0开始且长度至少为11。 我怎样才能做到这一点? 这是我的代码:

<Entry x:Name="txtPhoneNumber" Placeholder="شماره تلفن" Margin="5,10,5" FlowDirection="RightToLeft"
                   MaxLength="11"
                   Keyboard="Telephone">
                <Entry.Behaviors>
                    <local:NumericValidationBehavior/>
                    <local:MaxLengthValidatorBehavior  MaxLength="11"/>
                </Entry.Behaviors>
            </Entry>

这里是NumericValidationBehavior类:

public class NumericValidationBehavior : Behavior<Entry>
{
    protected override void OnAttachedTo(Entry entry)
    {
        entry.TextChanged += OnEntryTextChanged;
        base.OnAttachedTo(entry);
    }
    protected override void OnDetachingFrom(Entry entry)
    {
        entry.TextChanged -= OnEntryTextChanged;
        base.OnDetachingFrom(entry);
    }
    private static void OnEntryTextChanged(object sender,TextChangedEventArgs args)
    {

        if (!string.IsnullOrWhiteSpace(args.NewTextvalue))
        {
            bool isValid = args.NewTextvalue.ToCharArray().All(x => char.IsDigit(x)); //Make sure all characters are numbers

            ((Entry)sender).Text = isValid ? args.NewTextvalue : args.NewTextvalue.Remove(args.NewTextvalue.Length - 1);
        }
    }
}
delete0012005 回答:使用Xamarin.forms中的Entry属性检查以确保第一个输入数字为0

您可以在

中实现的行为中查看代码。
<local:NumericValidationBehavior/>
<local:MaxLengthValidatorBehavior  MaxLength="11"/>

如果您共享这两种行为的代码,我可以给您更清​​晰的印象。

请参见以下代码:-

私有静态无效OnEntryTextChanged(对象发送者,TextChangedEventArgs参数)     {

    if (!string.IsNullOrWhiteSpace(args.NewTextValue))
    {
        bool isFirstNumberZero = args.NewTextValue.ElementAt(0) == '0';
        if(!isFirstNumberZero)
        {
            ((Entry)sender).Text = args.NewTextValue.Remove(args.NewTextValue.Length - 1);
            return;
        }

        bool isValid = args.NewTextValue.ToCharArray().All(x => char.IsDigit(x)); //Make sure all characters are numbers
        ((Entry)sender).Text = isValid ? args.NewTextValue : args.NewTextValue.Remove(args.NewTextValue.Length - 1);
    }
}

通过此操作,您可以验证两件事:- 1.第一个数字为0。 2.所有输入的字符均为数字。

一旦用户点击某个按钮,例如“完成/提交/登录/下一步”。 到那时,您可以验证输入数字的长度,如果长度小于11,则发出警报。

本文链接:https://www.f2er.com/3166499.html

大家都在问