wpf – 使用UpdateSourceTrigger = PropertyChanged绑定到Decimal的TextBox

我一直在争论这个问题一段时间,似乎无法提出具体的解决方法 – 我有一个绑定到小数的TextBox,绑定将UpdateSourceTrigger设置为PropertyChanged并且必要时(如此)在这种情况下,LostFocus将无法正常工作).我确定的默认行为在某种程度上是可以解释的,对我的目的来说是不可接受的,所以我尝试了以下的StringFormat,我曾经想过要解决这个问题,但只是部分解决了,现在我正在寻找更具体的东西.我最初的解决方法是在绑定中添加一个字符串格式……就我的情况而言

StringFormat={0:#.#####} 

所以当输入类似.12345或1.5的东西时,解决方案效果很好,但是如果我键入.01234,一旦我按下零键,它就会删除我刚输入的小数…这显然是一个灾难性的数据录入.我希望我对字符串格式的熟悉程度不足. Wost case scenario我将我的公开属性设为字符串,setter和getter只是转换为十进制,但这似乎是一个hacky解决方案.

谢谢!

AJ

最佳答案
我遇到了这个因为我看到了.Net 4.6.2版本的相同问题.我需要输入汇率,例如1.15并发现它最终为115,删除了小数.我的解决方法是绑定到一个字符串属性,该属性在输入时保持它自己的字符串值,例如1,1,1.1,1.15.但是每次输入都试图更新Try Catch中的基础数字属性.它远非优雅,但符合我的需求.

转载注明原文:wpf – 使用UpdateSourceTrigger = PropertyChanged绑定到Decimal的TextBox - 代码日志