Beispiel #1
0
        public OverviewViewModel(
            IBikeService bikeService,
            ILocationService locationService,
            IStationService stationService,
            INavigationService navigationService,
            IDialogService dialogService)
        {
            _locationService   = locationService;
            _navigationService = navigationService;
            _dialogService     = dialogService;
            _locationService   = locationService;

            ShowBikeOnMapCommand       = CreateCommand <Bike>(ShowBikeOnMap, CanShowBikeOnMap);
            RefreshUserLocationCommand = CreateCommand(RefreshUserLocation);
            ToggleMapCommand           = CreateCommand(ToggleMap);

            ShowMap = Preferences.Get("ShowMap", false);

            PropertyChanged += (_, args) =>
            {
                switch (args.PropertyName)
                {
                case nameof(ShowMap):
                    OnPropertyChanged(nameof(ToggleMapText));
                    Preferences.Set("ShowMap", ShowMap);
                    break;

                case nameof(UserLocation):
                    OnPropertyChanged(nameof(GroupedItems));
                    break;

                case nameof(AllBikes) or nameof(AllStations):
                    OnPropertyChanged(nameof(MapItems));

                    OnPropertyChanged(nameof(GroupedItems));
                    break;
                }
            };

            var bikes = bikeService.GetAvailableBikes();

            bikes.CollectionChanged += (_, _) =>
            {
                AllBikes.ReplaceRange(bikes);
                OnPropertyChanged(nameof(AllBikes));
            };

            var stations = stationService.GetAvailableStations();

            stations.CollectionChanged += (_, _) =>
            {
                AllStations.ReplaceRange(stations);
                OnPropertyChanged(nameof(AllStations));
            };
        }