C# 在WPF绑定中设置Decimal属性的默认值
我将我的WPF表单绑定到一个类的Decimal属性。如果用户输入无效格式(字符串而不是十进制),文本框将自动亮起,显示为红色。但是,我希望在将插入的数据存储到数据库之前进行验证,从而使其更加安全 问题是,每当用户输入非十进制值时,绑定将返回0,而不是null或error。因此,它设法进入数据库,而无需二级验证 验证WPF绑定到十进制的最佳方法是什么?现在它不会返回null,所以我没有任何方法来捕获错误 下面是我如何绑定文本框的C# 在WPF绑定中设置Decimal属性的默认值,c#,wpf,mvvm,C#,Wpf,Mvvm,我将我的WPF表单绑定到一个类的Decimal属性。如果用户输入无效格式(字符串而不是十进制),文本框将自动亮起,显示为红色。但是,我希望在将插入的数据存储到数据库之前进行验证,从而使其更加安全 问题是,每当用户输入非十进制值时,绑定将返回0,而不是null或error。因此,它设法进入数据库,而无需二级验证 验证WPF绑定到十进制的最佳方法是什么?现在它不会返回null,所以我没有任何方法来捕获错误 下面是我如何绑定文本框的 <TextBox x:Name="stockT
<TextBox x:Name="stockTxtBx" Grid.Row="3" Grid.Column="1" Style="{StaticResource StandardBox}" Text="{Binding StockOnHand}"/>
另外,在哪里可以修改以添加验证
问题是,每当用户输入非十进制值时,绑定将返回0,而不是null或error
你的上述陈述有点不正确。当用户为特定字段输入了无效类型的文本时,实际发生的情况如下:
文本框周围出现红色边框(或其他装饰,具体取决于ErrorTemplate
值)
0
,这就是为什么您假设无效值总是返回0
。因此,实际上,只有无效值被忽略,而最后一个有效值保持不变
但是,要改善此问题,您有几个选项。一种方法是在保存数据之前检查的值。显然,如果检测到存在任何错误,则会弹出一条消息提醒用户,而不是继续保存。你可以从问题中找到更多关于这种方法的信息
另一个选项是限制特定TextBox
的文本输入,以便无法输入非数字键。在这里,我不再详细介绍如何执行此操作,而是更愿意要求您查看有关堆栈溢出的问题的答案。我相信这会有所帮助you@HaikalNashiha@Haikalashiha