ReactiveUI和Xaml绑定到Observables - 它何时起作用?

时间:2018-06-18 08:48:14

标签: reactiveui

让我们:

绑定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的约束。

2 个答案:

答案 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是代码

的人

关于。