2017-11-26 11 views
0

WPF ToggleButton을 ReactiveUI 명령 쌍에 바인딩 할 수 있습니까?ReactiveUI 토글 단추 바인딩

다른 관찰 가능 틱이있을 때 하나의 관찰 가능을 취소하는 Rx 패턴을 사용하고 있습니다. 따라서 Connect 명령을 실행하려면 토글 켜기를 선택하고 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)); 

어떤 아이디어? 많은 감사합니다. 내가 마지막으로이 문제를 해결했다 때

답변

3

는,이 같은 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 명령에 관찰의 값을 전달, 그래서 우리는 Select 변화를이 값을 사용할 필요가 a Unit.