public DestinationPickPage(string navigraphName, CategoryType category) { InitializeComponent(); DestinationItems = new ObservableCollection <DestinationItem>(); _navigraphName = navigraphName; IEnumerable <Waypoint> waypoints = from region in NavigraphStorage.LoadNavigraphXML(navigraphName).Regions from waypoint in region.Waypoints where waypoint.Category.Equals(category) select waypoint; foreach (Waypoint waypoint in waypoints) { DestinationItems.Add(new DestinationItem { ID = waypoint.ID, WaypointName = waypoint.Name, Floor = waypoint.Floor }); } MyListView.ItemsSource = from waypoint in DestinationItems group waypoint by waypoint.Floor into waypointGroup orderby waypointGroup.Key select new Grouping <int, DestinationItem>(waypointGroup.Key, waypointGroup); }
/// <summary> /// If it is the first time to get waypoint then get the value of /// route options and start the corresponding session. /// </summary> private void StartSession(EventArgs args) { const int falseInt = -100; List <int> avoidList = new List <int>(); if (Application.Current.Properties.ContainsKey("AvoidStair")) { avoidList.Add( (bool)Application.Current.Properties["AvoidStair"] ? (int)ConnectionType.Stair : falseInt); avoidList.Add( (bool)Application.Current.Properties["AvoidElevator"] ? (int)ConnectionType.Elevator : falseInt); avoidList.Add( (bool)Application.Current.Properties["AvoidEscalator"] ? (int)ConnectionType.Escalator : falseInt); avoidList = avoidList.Distinct().ToList(); avoidList.Remove(falseInt); } // Start the session _session = new Session( NavigraphStorage.LoadNavigraphXML(_navigraphName), (args as WaypointScanEventArgs).WaypointID, _destinationID, avoidList.ToArray()); _navigationResultHandler = new EventHandler(HandleNavigationResult); _session.Event.SessionResultHandler += _navigationResultHandler; WaypointEvent.CurrentWaypointEventHandler += _session.DetectRoute; }
async void Handle_ItemTapped(object sender, ItemTappedEventArgs e) { if (e.Item is Location location) { switch (NavigraphStorage.LoadNavigraphXML(location.UserNaming).Name) { case "NTUH_YunLin": var answser = await DisplayAlert("Go to navigation homepage", location.UserNaming, "OK", "Cancel"); if (answser) { await Navigation.PushAsync(new NavigationHomePage(location.UserNaming)); } break; default: break; } } }