Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
Wpf 通用数字验证规则?_Wpf_Validation_Validationrule - Fatal编程技术网

Wpf 通用数字验证规则?

Wpf 通用数字验证规则?,wpf,validation,validationrule,Wpf,Validation,Validationrule,当使用绑定到不同数字类型(如uint、int、double等)的TextBox控件时,输入不兼容的值,会产生用户不友好的错误消息 例如,使用绑定到uint的文本框并输入“-7”,将生成错误消息“Value'-'无法转换” 因此,我想创建一个验证规则,以生成更用户友好的错误消息 问题在于,验证重写不提供有关类型绑定的上下文信息。这意味着我必须为每种类型创建不同的规则,然后确保在xaml中使用了正确的规则,这太可怕了 我发现获取绑定类型信息的唯一方法是将ValidationStep设置为Update

当使用绑定到不同数字类型(如uint、int、double等)的TextBox控件时,输入不兼容的值,会产生用户不友好的错误消息

例如,使用绑定到uint的文本框并输入“-7”,将生成错误消息“Value'-'无法转换”

因此,我想创建一个验证规则,以生成更用户友好的错误消息

问题在于,验证重写不提供有关类型绑定的上下文信息。这意味着我必须为每种类型创建不同的规则,然后确保在xaml中使用了正确的规则,这太可怕了

我发现获取绑定类型信息的唯一方法是将ValidationStep设置为UpdatedValue,但这显然没有帮助,因为此时该值已被更新,如果格式不正确,甚至不会被调用

因此,我想知道如何在viewmodel上实际设置值之前验证该值,但要使用有关类型本身的上下文信息,这样我就可以使用反射来获取值,如Min和Max等


如果可能的话,我也希望避免使用自定义文本框方法,因为我认为这个想法也可以在其他地方使用

您是否尝试过将其作为绑定的一部分使用?如果需要使用反射来获取min/max/etc,那么您的验证听起来可能是错误的。我不是指ViewModel上定义的min/max,我是指由类型本身设置的min/max,即(int.MaxValue、double.MinValue等),这样我就可以向用户显示除系统格式异常之外的更有用的消息