最初它看起来对我来说是一个简单的问题,但我想的越多,我对实现我想要的最佳方式感到困惑。
我们正在WPF
MVVM
应用程序
所以情节是 -
我们有一个类MyClass
,其类型为Complex
,但它还有Category
类型int
的属性。
Public Class MyClass
Public Property Category As Integer
Public Property MyProperty As Complex
End Class
现在MyProperty
只能根据其类别拥有特定值。
我们有一个对象列表,其中包含针对每个类别的MyProperty的所有可能值。
我的问题是考虑MVVM,这个可能的项目列表放在哪里?
我们应该将它作为一个新属性的一部分,它具有MyProperty
的所有可能值,然后在设置属性时进行检查吗?或其他地方?
Public Property AvailablePropertyValues As IEnumerable(Of Complex)
将它保持在对象中会使我们将此对象绑定到视图时非常简单,因为我们不必过滤列表但我知道过滤每个项目的列表很简单,我们不应该考虑创建的简单性在建模对象时查看。
关于如何建模对象的任何想法?
答案 0 :(得分:0)
我认为你应该让屏幕上显示的所有数据来自viewmodel通过绑定,包括你想要选择的可能选择,以及实际选择的值,然后通过setter进行验证(&通过实现IValidatableObject接口,我可以看到设置器用于,基于输入值插入自定义验证逻辑或更好,所以你也可以获得无效值的UI通知。
对于IValidatableObject,您可以看到主题http://weblogs.asp.net/scottgu/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3或http://msprogrammer.serviciipeweb.ro/2012/03/19/ivalidatableobject-and-idataerrorinfo/