【发布时间】:2017-11-02 13:13:32
【问题描述】:
我有一个TextBox,它绑定了一个不可为空的十进制值。这是我下面的 XAML 代码。我需要UpdateSourceTrigger 和ValidatesOnDataErrors=true。
<TextBox
Text="{Binding Quantity, StringFormat=f2, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
/>
问题是在TextBox 上总是显示值 0.00。当我开始在TextBox 上输入时,0.00 总是在那里。要获取小数点后的值,应使用下一个箭头键。当输入小数点时,TextBox 允许使用两个小数点,但由于列出了属性的数据注释,它会显示错误,然后我们必须点击退格按钮来清除小数点零。如何使TextBox 在值为零时显示空字符串,当我开始输入时,TextBox 应该接受输入的值而不显示 0.00。
【问题讨论】:
-
您的标题与问题的其余部分不匹配,
0 != null。请澄清。 -
当你说“null”时,你的意思是“空字符串”,对吗?
-
这可能是您的解决方案:stackoverflow.com/a/11478265/424129
-
是的,一个空字符串。当文本框不在焦点上且文本框为空时,该值应为 0.00。
-
通常我在
IsKeyboardFocusWithin = true时使用绑定文本属性而不格式化的DataTrigger。这样它在不集中时被格式化,或者在你输入数据时不被格式化。你可以在这里找到一个例子:stackoverflow.com/a/8680879/302677。如果要隐藏 0.00,只需添加另一个触发器,如果 value = 0,则 Text 为空白。