WPF文本框中的奇怪问题stringformat - 光标向后移动

Ema*_*iel 3 data-binding wpf

我正在使用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将遇到的其他问题所发生的奇怪问题.

  • 那么当你有一个IsDefault设置为true的按钮并输入一个值然后点击回车时会发生什么.通常,该值不会被推送,您将丢失刚刚输入的值. (6认同)