使用UpdateSourceTrigger = PropertyChanged绑定到Decimal的TextBox

Aaj*_*Aaj 8 wpf binding textbox string-formatting propertychanged

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

StringFormat={0:#.#####} 
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

AJ

She*_*dan 0

您有两个简单的选择来实现您想要的目标:

  1. 尝试先输入“0”...您可以毫无问题地输入“0.01234”。

  2. 使用StringFormat={}{0:0.00000}...然后您可以毫无问题地输入“.01234”。

  • 我了解字符串格式之间的区别,并且尝试了两种格式。问题特别在于 updatesourcetrigger 设置为 propertychanged - 当您键入时尝试更新绑定,这将事情搞砸了......只是猜测。在您的测试用例中,您是否确保将 updatesourcetrigger 设置为 propertychanged?我已经尝试过几次,但仍然没有运气。 (2认同)