WPF文本框字符串格式忽略小数

时间:2014-08-04 22:12:30

标签: c# wpf vb.net

我不确定如何为这个问题撰写标题,让我深入探讨这个问题......

我在WPF应用程序中有一个文本框。此文本框具有双向绑定到类中的属性 - 整数。该整数表示货币金额乘以100 - 例如$ 100.00 - > 10000整数值。

我正在寻找一种格式,可能允许用户在带有小数的文本框中输入金额的值,并将该值以我上面描述的方式存储为整数。它还应显示在适当位置添加小数的任何值。

e.g。用户输入$ 22.31并且整数变为2231,当显示给用户时,值54598变为$ 545.98。

关于如何设置它的任何想法?我现在在绑定中所拥有的是货币字符串格式,但这并不适合我。

<TextBox
    Name"TotalAmountLabel"
    Text="Binding Path=TotalAmount, StringFormat=C, Mode=TwoWay}" />

基础财产:

Private _TotalAmount As Integer
Public Property TotalAmount() As Integer
    Get
        Return _TotalAmount
    End Get
    Set(ByVal value As Integer)
        _TotalApprovalAmount = value
    End Set
End Property

有什么想法吗?我知道我可能做了一个糟糕的工作,解释我在寻找什么,所以如果有什么不清楚的地方,请询问,我会澄清。

2 个答案:

答案 0 :(得分:4)

处理此问题的典型方法是使用IValueConverter,而不是字符串格式绑定。

这将允许您以您选择的任何格式转换文本和从文本转换,但将数据存储为整数。

答案 1 :(得分:2)

您已经标记了C#和VB,我的解决方案是C#解决方案。假设用户最多只能达到2个二进制点:

 String toInteger = Regex.Replace(TextBox.Text,"[$]|[.]","");
 // You can cast the toInteher to int value if you want like:
 // Convert.ToInt32(toInteger);
 String toValue = "$" + toInteger.Substring(0, toInteger.Lenght-2) + "." + toInteger.Substring(toInteger.Lenght-2, 2);