public RegisterSensorWindowViewModel()
        {
            var sensorRegistry = ((App)App.Current).SensorRegistry;

            this.RegisteredSensors = sensorRegistry.Sensors.ToReadOnlyReactiveCollection(
                sensorInformation => new SensorInformationViewModel(
                    sensorInformation,
                    vm => { },
                    vm => { sensorRegistry.UnregisterSensor(sensorInformation); }));

            this.UpdateUnregisteredSensorsCommand = (new ReactiveCommand()).AddTo(this.disposables);

            var sensorEnumerator = new Model.SensorEnumerator();
            var unregisteredSensorsObservable = this.UpdateUnregisteredSensorsCommand
                                                .Select(_ => sensorEnumerator.Enumerate().SubscribeOnUIDispatcher())
                                                .Switch()
                                                .Where(sensor => !sensorRegistry.IsRegistered(sensor))
                                                .Select(sensor => new SensorInformationViewModel(
                                                            sensor,
                                                            vm => { sensorRegistry.RegisterSensor(sensor); this.IsUnregisteredSensorsShown.Value = false; },
                                                            vm => { }));


            this.UnregisteredSensors = unregisteredSensorsObservable.ToReadOnlyReactiveCollection(this.UpdateUnregisteredSensorsCommand.ToUnit()).AddTo(this.disposables);

            (this.IsUnregisteredSensorsShown = new ReactiveProperty <bool>()).AddTo(this.disposables);
            this.ShowUnregisteredSensorsCommand = new ReactiveCommand();
            this.ShowUnregisteredSensorsCommand
            .Do(_ => { this.UpdateUnregisteredSensorsCommand.Execute(); this.IsUnregisteredSensorsShown.Value = true; })
            .CatchIgnore()
            .Subscribe()
            .AddTo(this.disposables);
        }
        public RegisterSensorWindowViewModel()
        {
            var sensorRegistry = ((App)App.Current).SensorRegistry;
            this.RegisteredSensors = sensorRegistry.Sensors.ToReadOnlyReactiveCollection(
                sensorInformation => new SensorInformationViewModel(
                    sensorInformation,
                    vm => { },
                    vm => { sensorRegistry.UnregisterSensor(sensorInformation); }));

            this.UpdateUnregisteredSensorsCommand = (new ReactiveCommand()).AddTo(this.disposables);

            var sensorEnumerator = new Model.SensorEnumerator();
            var unregisteredSensorsObservable = this.UpdateUnregisteredSensorsCommand
                .Select(_ => sensorEnumerator.Enumerate().SubscribeOnUIDispatcher())
                .Switch()
                .Where(sensor => !sensorRegistry.IsRegistered(sensor))
                .Select(sensor => new SensorInformationViewModel(
                    sensor, 
                    vm => { sensorRegistry.RegisterSensor(sensor); this.IsUnregisteredSensorsShown.Value = false; },
                    vm => { }));


            this.UnregisteredSensors = unregisteredSensorsObservable.ToReadOnlyReactiveCollection(this.UpdateUnregisteredSensorsCommand.ToUnit()).AddTo(this.disposables);

            (this.IsUnregisteredSensorsShown = new ReactiveProperty<bool>()).AddTo(this.disposables);
            this.ShowUnregisteredSensorsCommand = new ReactiveCommand();
            this.ShowUnregisteredSensorsCommand
                .Do(_ => { this.UpdateUnregisteredSensorsCommand.Execute(); this.IsUnregisteredSensorsShown.Value = true; })
                .CatchIgnore()
                .Subscribe()
                .AddTo(this.disposables);
        }