最初它对我来说看起来是一个简单的问题,但我越想越困惑,什么是实现我想要的最佳方法。
我们正在制作 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)
当我们将此对象绑定(bind)到 View 时,将其保存在对象中变得非常简单,因为我们不必过滤列表,但我知道为每个项目过滤列表是微不足道的,我们不应该在建模对象时考虑创建 View 的简易性.
关于如何为我的对象建模的任何想法?
最佳答案
我认为您应该让屏幕上显示的所有数据都通过绑定(bind)来自 View 模型,其中包括您要从中选择的可能选择以及实际选择的值,然后通过 setter 进行验证(这就是我所看到的setter 用于插入基于输入值的自定义验证逻辑)或更好,通过实现 IValidatableObject 接口(interface),因此您还可以有无效值的 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/
关于c# - 如何创建具有只能具有特定值的属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36310087/