我遵循WPF-MVVM设置:
目的是在整个表单正确验证后立即启用该按钮。 我的两个问题是:
答案 0 :(得分:1)
您的CanExecute
处理程序应该只是引用您的HasErrors
属性:
... (canExecute) => !HasErrors; ...
•如何实现button relay命令的CanExecute方法,而不是为每个属性更改调用整个模型的验证?
如果在每次击键后都没有检查,你能告诉我房产系统是否可能知道是否有任何验证错误?想一想......任何击键都可能使模型无效。无论哪种方式,您都不会注意到任何延迟,因为它会重新验证模型。
•延迟"最好的方法是什么? UpdateSourceTrigger设置相应的属性不是每次击键,但是,例如,在一秒钟之后"没有输入"?
如果您正在使用.NET 4.5,那么您很幸运... Microsoft刚刚向Delay
类添加了Binding
属性。这使您可以设置在目标上的值更改之后更新绑定源之前等待的时间(以毫秒为单位)。有关完整信息,请参阅MSDN上的BindingBase.Delay Property页面。