我有一个带有绑定到整数的文本框的表单和一个按钮。现在,当文本框的值无效时,我想立即禁用该按钮。
通常,会在VM中放置一个Can()方法,并在属性的setter中触发NotifyOfPropertyChange。但是,如果用户输入非数字值,例如,文本框无效,但永远不会调用属性设置器,因此我无法通知/禁用该按钮。
那么,当用户输入一个不会导致属性设置器被调用的无效值时,如何禁用该按钮?我对CM的了解有限,因为我刚刚开始。
答案 0 :(得分:4)
我发现解决此问题的最佳方法是将属性设置为字符串,并在属性设置器中对整数转换执行必要的字符串。如果转换无效,则可以将TextBox值重置为默认值。这样你的属性设置器就会被解雇。
如果你的模型有一个整数属性,那么将字符串版本放在视图模型上是有意义的,因为这只与UI有关,而不是业务逻辑。
如果您不希望用户能够输入非数字字符,那么您可以使用屏蔽文本框,例如Extended WPF Toolkit中包含的文本框,或者第三方控件套件中的文本框。正如Telerik或Infragistics提供的那些。
答案 1 :(得分:0)
我改用MaskedTextBox并将掩码设置为整数。