如何在Xamarin Forms上动态更改掩码?

zmeyuzjn  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(134)

我有一个用户输入银行账号的输入,我需要用语法“XXXX-X”来屏蔽它,其中连字符之前的字符串长度在4到13位之间变化,最后一位必须总是以连字符开头,它必须自动添加,而不是由用户输入。我的做法是:

<customcontrols:BorderlessEntry Text="{Binding Account}"
        Placeholder="0000000-0"
        Keyboard="Numeric" 
        MaxLength="14"
    <customcontrols:BorderlessEntry.Behaviors>
        <b:MaskedBehavior Mask="XXXXXXX-X" MinLength="6" MaxLength="14" />
    </customcontrols:BorderlessEntry.Behaviors>
</customcontrols:BorderlessEntry>

在这段代码中,掩码的长度是固定的,而我需要它是动态的。有没有办法做到这一点呢?
我已经在使用的屏蔽行为代码类似于this
我尝试过一些方法,比如通过entry.Text直接在输入中更改文本,但是没有成功

baubqpgj

baubqpgj1#

我是这样做的

void AccountEntry_TextChanged(object sender, TextChangedEventArgs e)
{
    if (!string.IsNullOrEmpty(e.NewTextValue) && e.NewTextValue.Length > 4)
        accountEntry.Text = HandleAccount(e.NewTextValue);
}

string HandleAccount(string input)
{
    if (input.Contains("-"))
    {
        input = input.Replace("-", "");
    }

    string result = string.Format("{0}-{1}", input.Substring(0, input.Length - 1), input[input.Length - 1]);

    return result;
}

相关问题