ReactiveUI 切换按钮绑定

ReactiveUI toggle button binding

是否可以将 WPF ToggleButton 绑定到一对 ReactiveUI 命令?

我正在使用 Rx 模式,当另一个可观察对象运行时取消一个可观察对象。因此,我希望切换为 ON 以触发 Connect 命令,切换为 OFF 以触发 Disconnect 命令。

Connect = ReactiveCommand
    .CreateFromObservable(() => app.Connection
            .TakeUntil(Disconnect),
        outputScheduler: schedulerProvider.MainThread);

Disconnect = ReactiveCommand.Create(
    () => { },
    Connect.IsExecuting);

View.xaml

<ToggleButton Name="Toggle" />

View.xaml.cs .. 不确定这应该如何工作...

d(this.BindCommand(ViewModel, x => x.Connect, x => x.Toggle));
d(this.BindCommand(ViewModel, x => x.Disconnect, x => x.Toggle));

有什么想法吗?非常感谢。

当我最后一次不得不解决这个问题时,我最终使用了 InvokeCommand 这样的:

d(this.Bind(ViewModel, vm => vm.IsConnected, v => v.Toggle.IsChecked));

d(ViewModel
    .WhenAnyValue(vm => vm.IsConnected)
    .Where(value => value == true)
    .Select(_ => Unit.Default)
    .InvokeCommand(ViewModel.Connect));
d(ViewModel
    .WhenAnyValue(vm => vm.IsConnected)
    .Where(value => value == false)
    .Select(_ => Unit.Default)
    .InvokeCommand(ViewModel.Disconnect));

InvokeCommand 将 observable 的值传递给命令,因此我们需要使用 Select 将值更改为 Unit.