public void BehaviorSubjectTest() { var s = new BehaviorSubject <string>("initial value"); var rp = s.ToReadOnlyReactiveProperty(); rp.Value.Is("initial value"); }
public DeviceSelectDialogViewModel() { _disposables = new CompositeDisposable(); LocalAddress = SwMainApi.GetAllLocalIPv4Addresses().FirstOrDefault(); var ver = Assembly.GetCallingAssembly().GetName().Version; AppVersion = $"{ver.Major}.{ver.Minor}.{ver.Build}"; _devices = new ObservableCollection <DiscoverResult>(); Devices = _devices.ToReadOnlyReactiveCollection().AddTo(_disposables); _discoverBusy = new BusyNotifier(); DiscoverDeviceCommand = _discoverBusy.Inverse().ToReactiveCommand().AddTo(_disposables); DiscoverDeviceCommand.Delay(new TimeSpan(100)).Subscribe(_ => DiscoverDevice()).AddTo(_disposables); IsSearchIpMode = new ReactiveProperty <bool>(false).AddTo(_disposables); IsSearchIpMode.Subscribe(b => { if (b) { // Enter mode: clear fail flag. _searchFailed.OnNext(false); } else if (DiscoverDeviceCommand.CanExecute()) { // Exit mode: rescan devices. DiscoverDeviceCommand.Execute(); } }).AddTo(_disposables); _searchFailed = new BehaviorSubject <bool>(false).AddTo(_disposables); SearchFailed = _searchFailed.ToReadOnlyReactiveProperty().AddTo(_disposables); SearchIpAddr = new ReactiveProperty <string>().SetValidateAttribute(() => SearchIpAddr).AddTo(_disposables); SearchIpCommand = Observable.CombineLatest(SearchIpAddr.ObserveHasErrors, _discoverBusy, (e, c) => !e && !c) .ToReactiveCommand().AddTo(_disposables); SearchIpCommand.Subscribe(_ => SearchIp()).AddTo(_disposables); }
public void BehaviorSubjectTest() { var s = new BehaviorSubject<string>("initial value"); var rp = s.ToReadOnlyReactiveProperty(); rp.Value.Is("initial value"); }