首页 > 解决方案 > 无法将 TextBox 文本更改为包含两位小数

问题描述

我有一个 TextBox,在 LostFocus 上我运行一个函数,将值转换为末尾有两个零的小数。(例如,192 变为 192,00)。

xaml 中的文本框:

<TextBox x:Name="AmountGross"  
         Text="{Binding AmountGross, StringFormat='0.00',
         UpdateSourceTrigger=PropertyChanged,
         ValidatesOnExceptions=True,
         ValidatesOnDataErrors=true, 
         NotifyOnValidationError=true}" 
         GotKeyboardFocus="TextBoxGotKeyboardFocusHandler"
         TextChanged="TextBoxTextChangedHandler"
         PreviewKeyUp="DEFixedButtonPreviewKeyUpHandler" 
         HorizontalContentAlignment="Right" LostFocus="TextBoxLostFocus" >
 </TextBox>

和 TextBoxLostFocus 代码:

if (cell.Text != "")
{
    decimal value = -1;
    if (decimal.TryParse(cell.Text, out value))
    {
        string a = string.Format("{0:N}", Convert.ToDecimal(value)); //THIS LINE CONVERTS IT TO 192,00
        cell.Text = a.ToString().Replace(".", ""); //HERE THE CELL.TEXT IS 192
    }
}

转换(192 到 192,00)效果很好,但是当我将 Text 分配给 TextBox 时,它会变为整数(192)。

编辑: a 变量是正确的(55,00)。当它被分配给 cell.Text 然后它删除逗号分隔符,它变成:(5500)。 var A cell.Text

为什么会发生这种情况,我该如何避免这种情况?

标签: c#wpfxamltextbox

解决方案


它可能从“AmountGross”属性中获取数据类型,因此如果它是 int 文本框,则将此类型作为默认数据类型,尝试将属性类型更改为十进制。


推荐阅读