protected override void OnNavigatedTo(NavigationEventArgs e) { if(_services == null) _services = new Dictionary<BusStop, DepartureTimeService>(); var mainViewModel = new MainViewModel {PivotViewModels = new ObservableCollection<PivotViewModel>()}; using(var db = MadMetroDataContext.NewInstance()) { foreach(var busStopRoute in db.BusStopRoutes.Where(bsr => bsr.IsTracking)) { if(!_services.ContainsKey(busStopRoute.BusStop)) { var service = new DepartureTimeService(busStopRoute.BusStop); service.TimesDetermined += OnDepartureTimeRecieved; _services.Add(busStopRoute.BusStop, service); var pvm = new PivotViewModel { BusStop = busStopRoute.BusStop, BusStopTimes = new ObservableCollection<BusStopTime>(), RouteDirections = new ObservableCollection<RouteDirection>() }; mainViewModel.PivotViewModels.Add(pvm); } //get the viewModel for this bus stop so we //can add all tracked RouteDirections var viewModel = mainViewModel.PivotViewModels.Single(pvm => pvm.BusStop.Equals(busStopRoute.BusStop)); var routeDirection = new RouteDirection { Direction = busStopRoute.Direction, Route = busStopRoute.Route }; viewModel.RouteDirections.Add(routeDirection); } } DataContext = mainViewModel; }
public void Initialize(IEnumerable<BusStopRoute> busStopRoutes) { PivotViewModels = new ObservableCollection<PivotViewModel>(); foreach (var busStopRoute in busStopRoutes) { //create the pivot view for this bus stop if it doesn't already exist if (!_pivotViewModels.Any(pvm => pvm.BusStop.Equals(busStopRoute.BusStop))) { } var viewModel =_pivotViewModels.Single(pvm => pvm.BusStop.Equals(busStopRoute.BusStop)); viewModel.RouteDirections.Add(new RouteDirection{Direction = busStopRoute.Direction, Route = busStopRoute.Route}); } if(PivotViewModels.Count > 0) SelectedPivotViewModel = PivotViewModels[0]; NoRoutesTracked = PivotViewModels.Count == 0; }