我正在尝试找出验证用户输入的最佳方法,我一直在研究ValidationRule和IDataErrorInfo。我有一个VM和一个模型,我想确保用户不会在绑定到double(或int)的多个文本框中输入字母。
我遇到了三个问题
1)当我使用ValidationRule时,该方法返回“ValidationResult”,但它存储在哪里?它存储为某个属性吗?
2)如果我使用IDataErrorInfo并输入一些字母,它永远不会被调用(如果输入数字,则会调用)。这是预期的吗? *
*(我认为可能值转换器可以帮助解决这个问题,但我觉得我正在混合两个不同的概念)
3)实际上,我想做的是在用户单击“保存”时进行验证并检查所有值。所以也许使用这两种方法并不是我需要的,如1838300中所述。正确吗,这些仅用于即时验证?
我的想法是,在第3点上,如果ValidationRule的结果被存储在某个地方,我可以为每个控件或存储位置检查它。或者如果IDataErrorInfo被调用,我可以手动为每个控件存储一些布尔值并检查它们。
有什么想法或建议吗?
谢谢!