数字向后显示?

时间:2011-03-22 16:03:54

标签: wpf data-binding binding

当我阅读用户投诉时,我不相信... 在绑定的WPF文本框中键入.123显示.321!现在已修复,但我想知道这是否可以分类作为一个WPF错误?

当文本框绑定到Entity Framework双字段且UpdateSourceTrigger绑定模式设置为PropertyChanged时,会出现此问题。对于小数点后输入的每个数字,光标移回到小数点后面,导致向后的数字。当我将UpdateSourceTrigger恢复为默认的LostFocus时,问题(可以理解)就消失了。

那么,这是一个错误吗?是否有一种解决方法可以在绑定到双字段时允许UpdateSourceTrigger成为PropertyChanged?

2 个答案:

答案 0 :(得分:3)

TextBox设置为LostFocus而不是PropertyChanged是有原因的。将此绑定到EF double时,验证可能会导致值重置,从而可以重置光标位置。

使用UpdateSourceTrigger.PropertyChanged使TextBox正确运行需要相当数量的自定义逻辑,因为您需要在绑定更新之前跟踪事件中的光标位置,然后恢复。

我怀疑这会被视为一个错误,因为WPF将TextBox设置为UpdateSourceTrigger.LostFocus。如果默认值不同,我会同意这是一个错误 - 但是考虑到默认设置,我怀疑团队会将其视为一个。

答案 1 :(得分:0)

很抱歉这么晚来参加聚会,但是我们也有同样的问题,以防其他人碰巧看到这篇文章,我们有一个不同的解决方案......我们使用StringFormat作为TextBox:

Text="{Binding Path=YourDecimalOrDouble, StringFormat=\{0:#.#####\}, UpdateSourceTrigger=PropertyChanged}

上述内容应解决您遇到的问题......至少它是为我们做的。

无论如何,希望它有所帮助!