如何强制Windows Phone 8中的TextBox允许带点后两位数的十进制数

时间:2015-11-26 13:07:29

标签: c# xaml windows-phone-8

我一直在寻找一些线索强制通过一些事件文本框,只允许我输入数字并在该点之后仅构建一个十进制数字,例如jQuery.MaskMoney与jQuery一起开发,因为在windows phone需要收集这些信息。但到目前为止,我已经找到了我在代码中尝试复制的内容,但没有成功。正则表达式有帮助,但想法是强制用户但不显示验证我的正则表达式的验证消息。据我所知,Windows Phone 8中的开发在资源方面有点受限,因此我假设需要的是自定义。

<TextBox Name="TxtAmountValue" InputScope="Number" Style="{StaticResource MyTextBoxStyle}" MaxLength="5" />

例如,如果要支付的金额是12.52,应该出现的是:0.01 - &gt; 0.12 - &gt; 1.25到12.52

更新

decimal value;
            if (decimal.TryParse(control.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
            {
                if (e.Key == Key.Back && str.Length > 0)
                {
                    str = (value / 10).ToString("#0.00");
                }
                else
                {
                    if (str.Length == 1 && value == 0)
                    {
                        str = value.ToString("#0.00", CultureInfo.InvariantCulture);
                    }
                    else if (str.Length >= 4 && str.Length <= 5)
                    {
                        decimal tempValue = value;
                        str = (value * 10).ToString("#0.00");
                        if (str.Length > 5)
                        {
                            str = tempValue.ToString("#0.00", CultureInfo.InvariantCulture);
                        }
                    }
                    else
                    {
                        str = (value / 100).ToString("#0.00");
                    }
                }
                control.Text = str;
                control.SelectionStart = control.Text.Length;
            }

1 个答案:

答案 0 :(得分:0)

为此你应该使用mvvm light toolkit / architecture。

然后将文本框绑定到属性。

然后,该属性可以具有数据注释,该注释可以是仅允许此类文本的正则表达式