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
.
是否可以将 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
.