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)); }; }