所以我对 MVVM 还是很陌生,我一直在努力解决一些关于用户输入验证的问题。WPF 有一些看起来像“魔术”的内置功能,一般来说,我知道“魔术”不好。
例如:如果您将 a 绑定TextBox
到具有类型 of 的 Propertydouble
并且用户在其中输入“hello” ,WPF 会自动在通知用户输入无效的TextBox
周围显示一个红色边框。TextBox
这一切都很好,但看起来确实像“魔术”。一位经验丰富的开发人员告诉我,类似的 WPF 和应用程序构建器希望拥有过多的控制权。他说,在 Web 开发中,视图不会知道属性是什么类型。这对我来说很有意义。所以这引出了我的一般性问题——WPF 视图应该理解属性类型吗?- 如果我将 Property 类型声明为 a string
,那么我可以完全控制视图。而不必解决 WPF 的“智能” TextBox
“魔法”。
表达我的问题的另一种方法是 -应该在模型或视图模型中声明属性类型吗?
我了解,如果您将模型中的属性类型声明为 adouble
并string
在 ViewModel 中声明为 a ,则必须在模型中对其进行解析。在我看过的大多数 MVVM 应用程序示例中,Property 类型在整个应用程序中都是相似的,但我认为不了解它正在使用什么的“愚蠢”视图会好得多。
回到我的例子:如果 Property 被声明为 a String
,您可以完全控制输入所需的格式并防止无效输入。这似乎是比信任 WPF 更好的解决方案TextBox
。