wpf绑定显示两位小数

如题所述

关于c#:在WPF绑定中设置小数属性的默认值

c#mvvmwpf
Setting the Default Value for Decimal Property in WPF Binding
我将WPF表单绑定到类的Decimal属性。 如果用户输入无效的格式(字符串而不是十进制),则文本框会自动以红色显示。 但是,我想通过在将插入的数据存储到数据库之前进行验证来使其更加安全。

问题是,每当用户输入非十进制值时,绑定将返回0,而不是null或error。 因此,它无需第二级验证就可以进入数据库。

验证WPF与小数的绑定的最佳方法是什么? 现在它不会返回null,所以我没有任何办法捕获错误。

这是我绑定文本框的方式

1
        <TextBox x:Name="stockTxtBx" Grid.Row="3" Grid.Column="1"  Style="{StaticResource StandardBox}" Text="{Binding StockOnHand}"/>
另外,在哪里可以修改以添加验证?

相关讨论
我确定此页面会为您提供帮助
@HaikalNashiha也许谷歌翻译
@HaikalNashiha此页面也很适合您
The problem is, whenever a user enter a non decimal value, the binding will return 0 instead of null or error

您在上述声明中略有错误。当用户输入某些文本的特定字段的类型无效时,实际发生的情况是:

无效的文本会导致TextBox周围出现红色边框(或其他修饰,具体取决于ErrorTemplate值)。
数据绑定属性值保留为最后输入的有效值
因此,在您的情况下,最后一个有效值可能是0,这就是为什么您认为无效值将始终返回0的原因。因此,实际上,只有无效值被忽略,而最后一个有效值仍然保留。

但是,要解决此问题,您有几种选择。一种方法是在保存数据之前检查Validation.HasError附加属性的值。显然,如果您检测到存在任何错误,那么您将弹出一条消息来提醒用户,而不是继续保存。您可以从MVVM问题中的Binding Validation.HasError属性中找到有关此方法的更多信息。

另一个选择是限制特定TextBox的文本输入,这样就不可能输入非数字键。在这里,我不会再详细说明如何执行此操作,而是希望您在Stack Overflow上要求您查看
温馨提示:答案为网友推荐,仅供参考
相似回答