Caliburn Micro:禁用窗体验证错误按钮

问题描述:

我有一个窗体,其文本框绑定到一个整数和一个按钮。现在,当文本框的值无效时,我想立即禁用该按钮。Caliburn Micro:禁用窗体验证错误按钮

通常,人们会在VM中放入一个Can()方法,并在属性的setter中触发NotifyOfPropertyChange。但是,如果用户输入一个非数字值例如,文本框是无效的,但属性设置器从不被调用,所以我不能通知/禁用按钮。

那么,当用户输入一个不会导致属性设置器被调用的无效值时,如何禁用该按钮?我刚刚起步时对CM的了解有限。

我发现这个问题的最佳方法是使属性成为一个字符串,并在属性设置器中完成必要的字符串到整数转换。如果转换无效,则可以将TextBox值重置为默认值。这样你的财产制定者将永远被解雇。

如果您的模型具有整数属性,那么将字符串版本放置在视图模型上是有意义的,因为这只与UI有关,而不是业务逻辑。

如果您不希望用户能够输入非数字字符,那么您可以使用掩码文本框(如Extended WPF Toolkit中包含的文本框)或第三方控制套件(如提供的那些文本框) Telerik或Infragistics。

+0

感谢您使用扩展WPF工具包的提示。我最终使用了他们的NumericUpDown。 – 2011-03-23 09:47:33

我会使用MaskedTextBox来代替,并将掩码设置为仅用于整数。

+0

这是一个WPF问题,标准WPF控件中没有可用的MaskedTextBox。 – devdigital 2011-03-21 22:53:40