我的问题要求我根据某些依赖关系验证视图模型中的各个字段。我正在使用 Silverlight、Prism 和 MVVM。
作为一个例子(从我的真实世界场景改变):
每艘船可以有很多集装箱,一个集装箱可以有很多物品。
每当更改属性时,每个类都会继承NotificationObject
并调用。RaisePropertyChanged
我的业务规则是确保当属性Ship.TypeId等于 1时Item.Colour、Item.Name和Item.Size不为空。如果Ship.TypeId等于其他任何值,我不需要验证Item中的属性。
目前正在OnPropertyChanged
事件的视图模型中进行验证。
我面临的问题是,如果我在Item类中添加验证,则该对象不知道Ship.TypeId。如果我订阅Item和ContainerPropertyChanged
抛出的事件,我可以从Ship中检测到属性更改,但只能获取属性名称(相对于子类,即 Name),但不能获取旧值或新值。
我想要做的是验证子项目,同时知道Ship.TypeId是并且还知道哪个Name、Color或Size属性已更改,并能够针对 UI 上的正确字段引发错误。
非常感谢,阿德里安