使用UpdateSourceTrigger = PropertyChanged绑定到Decimal的TextBox

时间:2012-04-27 16:10:27

标签: wpf binding textbox string-formatting propertychanged

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

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

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

谢谢!

AJ

2 个答案:

答案 0 :(得分:1)

我遇到了这个问题,因为我在.Net 4.6.2版本中看到了相同的问题。我需要输入汇率,例如1.15,发现小数点后最后是115。我的解决方法是绑定到一个字符串属性,该属性在输入时保持其自己的字符串值,例如1、1、1.1、1.15。但是,每个输入都尝试更新Try Catch中的基础数字属性。它远非优雅,但可以满足我的需求。

答案 1 :(得分:0)

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

  1. 首先尝试输入“0”...您可以输入“0.01234”而不会出现问题。

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