在Demo中有如下部分代码
前台:
1 <Button Width="65" Content="提交注册" FontSize="14" Style="{StaticResource BtnStyle}" Command="{Binding RegisterCommand}"/>
后台:
调试过程中,CanRegister方法只在程序加载过程中执行了一次,也就是说,Button的IsEnabled属性一直是false(IsValid()初值返回false)
问题是:DelegateCommand只对CanRegister执行一次???只能手动在后台调用RaiseCanExecuteChanged()方法???本人初学者,请问有没有其他可行方法。。。还是说代码本身就有问题?求指导。。急。。
if (registerCommand == null) { registerCommand = new DelegateCommand<object>(OnRegisterExcute, this.CanRegister); }
这段代码只会执行一次,执行完成后
registerCommand 不再为空,被直接返回,所以
CanRegister也只执行了一次
请问有什么办法吗?只能手动在后台调用RaiseCanExecuteChanged()方法?
@Smlusm: 如果IsValid变成true,程序能否继续进行呢?
@WuRang: 不会的,IsValid只是一个方法,返回值是bool型而已,它的功能就是判断注册信息是否都填写合法。本来以为CanExecute会自动检测,这样注册信息填写合法了,注册按钮就有效了。但我在调试RelayCommand的CanExecute时,却是无时不刻都在检测,DelegateCommand这个就不一样了。。。
@Smlusm: DelegateCommand是注册了CanExecuteChanged事件,当事件触发才会调用CanExecute。所以可能需要手动调用了http://www.silverlightchina.net/html/tips/2012/0209/13662.html
@WuRang: 上午找资料时也有看到这篇文章,呵呵。。看来只能这样了,谢谢啦,就此结贴吧