public BlokEmulationParameters(IPathRiderProvider PathRiderProvider, IWheel Wheel)
        {
            Observable.FromEvent(a => Wheel.SpeedChanged += (s, e) => a(), a => { })
                      .Select(_ => Wheel.Speed)
                      .ToProperty(this, x => x.Speed, out _speed);

            PathRiderProvider.PathRider
                             .CombineLatest(Wheel.Milage,
                                            (rider, milage) => rider.PointAt(milage))
                             .ToProperty(this, x => x.Position, out _position);
        }
        public MsulEmulationParametersViewModel(IWheel Wheel, IPathRiderProvider PathRiderProvider)
        {
            _wheel = Wheel;
            TimeShift = TimeSpan.FromHours(15) - DateTime.Now.TimeOfDay;

            TrainNumber = 777;
            OutdoorTemperature = -18.4;
            EmergencyStop = false;
            LeftDoorLocked = true;
            RightDoorLocked = false;
            LeftDoorOpened = false;
            RightDoorOpened = false;
            LightOn = true;

            Carriages =
                new[]
                {
                    new CarriageParametersViewModel(1, CarriageKind.TractionHead),
                    new CarriageParametersViewModel(2, CarriageKind.HighVoltage),
                    new CarriageParametersViewModel(3, CarriageKind.Normal),
                    new CarriageParametersViewModel(4, CarriageKind.HighVoltage),
                    new CarriageParametersViewModel(5, CarriageKind.TractionHead)
                };

            Observable.Interval(TimeSpan.FromSeconds(1))
                      .Select(i => DateTime.Now + TimeShift)
                      .ToProperty(this, x => x.Time, out _time);

            Observable.FromEvent(a => _wheel.SpeedChanged += (s, e) => a(), a => { })
                      .Select(_ => _wheel.Speed)
                      .ToProperty(this, x => x.Speed, out _speed);

            PathRiderProvider.PathRider
                             .CombineLatest(_wheel.Milage,
                                            (rider, milage) => rider.PointAt(milage))
                             .ToProperty(this, x => x.Position, out _position);
        }