我在button上绑定了一个relaycommand,如下
1 private bool _a = true; 2 public bool a 3 { 4 get { return _a; } 5 set 6 { 7 this._a = value; 8 RaisePropertyChanged("a"); 9 rcmd.RaiseCanExecuteChanged(); 10 } 11 } 12 13 rcmd = new RelayCommand(() => 14 { 15 a = false; 16 bbb(); 17 }, () => a);
bbb里面我发了一个http请求,为什么按钮是在bbb()执行完了之后才被禁用.但是通过断点查看确实是在init的时候走一次()=>a,单机后走一次a()=>a然后当a=false之后调到()=>a执行然后再执行bbb();但是从界面的现象看按钮点击了要等一下才变灰,而且我做实验把bbb()换成死循环while(true){},那么按钮永远就停在点击那个状态,不变灰。这是为什么呢?