我正在使用WPF 4.0 TextBox和绑定.我正在使用StringFormat将数字格式化为货币.XAML看起来像这样:
<TextBox Text="{Binding Path=ValueProperty, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, StringFormat={}{0:C}, UpdateSourceTrigger=PropertyChanged}">
</TextBox>
Run Code Online (Sandbox Code Playgroud)
除了奇怪的行为之外,一切似乎都能正常工作:例如当用户键入12时:在输入1之后,文本框中的值变为$ 1.00,奇怪的是光标移动到$和1之间因此,当用户只输入12时,结果变为$ 21.00.
我怎样才能解决这个奇怪的行为?
Ree*_*sey 10
我将UpdateSourceTrigger更改回LostFocus的默认值(对于TextBox).
通过将其设置为PropertyChanged,您每次用户键入字符时都会强制进行验证和字符串格式.这会导致非常奇怪的行为,例如你所看到的.
如果您将其保留为默认值(或明确地将其设置回LostFocus),则在用户完成键入时将进行格式化+验证.这将消除StringFormat插入新字符,验证中断部分以及使用PropertyChanged将遇到的其他问题所发生的奇怪问题.