如何使用格式化的十进制值使TextBox正常工作



我有一个TextBox,它绑定了一个不可为null的十进制值。这是我下面的XAML代码。我需要UpdateSourceTriggerValidatesOnDataErrors=true

<TextBox 
Text="{Binding Quantity, StringFormat=f2, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
/>

问题是在TextBox上始终显示值0.00。当我开始在TextBox上打字时,0.00总是在那里。要获取小数点后的值,应使用下一个箭头键。当键入一个小数点时,TextBox允许两个小数点,但由于列出了属性的数据注释,它显示了一个错误,然后我们必须按下退格按钮来清除小数零点。当值为零时,如何使TextBox显示空字符串?当我开始键入时,TextBox应接受键入的值,而不显示0.00。

在没有测试过的情况下:您可以使用GotFocus事件或类似事件来检查当前值是否为0:

private void textbox1_GotFocus(Object sender, EventArgs e) {
TextBox tb = (sender as TextBox);
if(tb == null) return;
decimal d = 0;
if(Decimal.Parse(tb.Text, out d)) {
if(d==0) tb.Text = String.Empty;
}
}

还可以查看PreviewX事件。例如,PreviewKeyDown。

最新更新