Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF绑定中设置Decimal属性的默认值_C#_Wpf_Mvvm - Fatal编程技术网

C# 在WPF绑定中设置Decimal属性的默认值

C# 在WPF绑定中设置Decimal属性的默认值,c#,wpf,mvvm,C#,Wpf,Mvvm,我将我的WPF表单绑定到一个类的Decimal属性。如果用户输入无效格式(字符串而不是十进制),文本框将自动亮起,显示为红色。但是,我希望在将插入的数据存储到数据库之前进行验证,从而使其更加安全 问题是,每当用户输入非十进制值时,绑定将返回0,而不是null或error。因此,它设法进入数据库,而无需二级验证 验证WPF绑定到十进制的最佳方法是什么?现在它不会返回null,所以我没有任何方法来捕获错误 下面是我如何绑定文本框的 <TextBox x:Name="stockT

我将我的WPF表单绑定到一个类的Decimal属性。如果用户输入无效格式(字符串而不是十进制),文本框将自动亮起,显示为红色。但是,我希望在将插入的数据存储到数据库之前进行验证,从而使其更加安全

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

验证WPF绑定到十进制的最佳方法是什么?现在它不会返回null,所以我没有任何方法来捕获错误

下面是我如何绑定文本框的

        <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