我相信我在MVVM验证中发现了一个漏洞,或者可能是我对它的理解中的一个漏洞。假设有人在绑定到整数的文本框中输入字母"a"。文本框收到错误,因此不会更改我的视图模型。我的视图模型永远不知道会发生这种情况,因此如果我的视图模型从未被告知问题,我该如何通知我的命令在我的视图模型中禁用。如果发生此类验证错误,有没有办法从视图中禁用按钮?
我在SO的某个地方写了这个,但我没有找到它。再看这里:)顺便说一句,string
int
情况不适用于 MVVM,因为由于绑定异常,您的视图模型无法获得任何信息。
我看到两种方法可以获得您想要的验证:
-
只需在视图模型中使用
string
属性,当必须转到模型时,只需将string
转换为模型类型即可。 -
创建行为或"特殊"控件,以便视图中的输入始终"可转换"为视图模型类型。
顺便说一句,我使用第二种方法,因为我必须:)但第一个总是有效的,对我来说似乎更容易。
如果确实要强制用户输入有效的整数,请使用扩展 WPF 工具包中的特定控件(如 IntegerUpDown),而不是纯文本框。