wpf - 使用 UpdateSourceTrigger=PropertyChanged 绑定(bind)到 Decimal 的 TextBox

标签 wpf binding textbox string-formatting propertychanged

我一直在与这个问题作斗争一段时间,似乎无法提出具体的解决方法 - 我有一个绑定(bind)到小数的 TextBox,并且绑定(bind)已将 UpdateSourceTrigger 设置为 PropertyChanged,这是必要的( LostFocus 在这种情况下无法正常工作)。虽然我确信默认行为是可以解释的,但对于我的目的来说是 Not Acceptable ,所以我尝试了以下 StringFormat,我认为它可以解决这个问题,但只是部分解决了问题,现在我正在寻找更具体的东西。我最初的修复是在绑定(bind)中添加一个字符串格式......在我的情况下是

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

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

谢谢!

Aj

最佳答案

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

关于wpf - 使用 UpdateSourceTrigger=PropertyChanged 绑定(bind)到 Decimal 的 TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10354135/

相关文章:

PHP - mysqli::prepare 返回 false

javascript - jQuery 代码完成样式文本框输入

c# - 有没有比 Grid 或 WrapPanel 更好的方法来在表单上布置标签/值对?

wpf - 在依赖属性 (XAML) 中使用大值

java - 如何使用 JAXWS 和 APT 自定义日期/时间绑定(bind)?

wpf - MVVM UserControl 和使用该控件时的绑定(bind)

css - 默认文本框边框样式和宽度

Javascript 启用已禁用的文本框

c# - 如何在圆圈周围放置标签?

c# - WPF 改变窗口模式状态