我正在将我现有的应用程序之一转换为 MVVM 模式以改进其结构,但我对什么是进行数据验证的最佳方式感到有些困惑。
目前,该应用程序使用数据绑定来链接 UI 和代码,并使用一些验证规则和值转换器,这些规则和值转换器可以在相似的值上重复使用(每个用于日期等)。
在阅读 MVVM 时,我遇到了 IDataErrorInfo,我觉得它很有吸引力,因为它会将验证排除在视图之外,从而在设置绑定等时略微减少重复代码,并允许更具体的错误消息。
另一方面,如果验证失败,ValidationRules 会阻止绑定数据的传输,这是我需要的,因为我只希望模型值更改一个新的有效值。
我主要担心的是,如果我在视图模型中限制太多,这会使视图中的事情变得困难 - 在一般情况下将事物限制在舒适的水平,然后补救需要更多灵活性的特定情况是否是个好主意风景?
所以我的主要问题是,将验证和转换放在视图模型的属性中还是坚持我的验证规则和值转换器(或两者之间的某种妥协)会更好吗?