让我们:
绑定A
<Buton IsEnabled="{Binding ButtonCommand.CanExecute}"/>
绑定B
<ProgressRing IsActive="{Binding ButtonCommand.IsExecuting}"/>
我注意到绑定A有效,但绑定B没有。 我想知道为什么?
ps:我没有询问如何使用ObservableAsPropertyHelper
更新
A和B都不一致(我们应该使用OPAH)。 当我说方法A有效时,我确实错了。 感谢@Adrian坚持这一点。
的确,在案例A中,我的按钮命令也被绑定:
<Button Command="{Binding ButtonCommand}" IsEnabled="{Binding ButtonCommand.CanExecute}"/>
我不知道,但我CanExecute
的{{1}}会直接影响我的ReactiveCommand
财产。因此,我错误地断定我观察到的行为是由于我对Button.IsEnabled
的约束。
答案 0 :(得分:0)
您应该在后面的代码中执行此操作:
this.WhenActivated(d=>
{
d(this.BindCommand(ViewModel, vm => vm.ButtonCommand, v => v.ButtonA));
d(this.WhenAnyObservable(v => v.ViewModel.ButtonCommand.IsExecuting).BindTo(this, v => v.ProgressRing.IsActive));
}
答案 1 :(得分:0)
绑定A和绑定B不起作用。
绑定A似乎有效,因为当您将ReactiveCommand与控件绑定时,当命令执行时,控件的IsEnabled属性会受到Command的执行的影响。
对于任何想知道内部here是代码
的人关于。