当使用绑定到不同数字类型(例如,uint、int、double 等)的 TextBox 控件时,输入不兼容的值会产生用户不友好的错误消息。
例如,使用绑定到 uint 的 TextBox 并输入“-7”,会产生错误消息“无法转换值 '-'”。
所以我想创建一个验证规则来产生更多用户友好的错误消息。
问题是验证覆盖没有提供有关类型绑定的上下文信息。这意味着我必须为每种类型创建不同的规则,然后确保我在 xaml 中使用了正确的规则,这太可怕了。
我发现获取有关绑定类型的信息的唯一方法是将 ValidationStep 设置为 UpdatedValue,但这显然无济于事,因为该值已经在此时更新,并且如果它的格式不正确,甚至不会被调用。
所以我想知道如何在视图模型上实际设置值之前验证一个值,但是使用关于类型本身的上下文信息,这样我就可以使用反射来获取诸如 Min 和 Max 等值
如果可能的话,我还想避免使用自定义 TextBox 方法,因为我认为这个想法也可以在其他地方使用