private void OnMainNavigationPushPopRequest(object sender, UpdatedContentEventArgs e) { Device.BeginInvokeOnMainThread(() => { ArgumentException exceptionIns = new ArgumentException("MainPage.OnMainNavigationPushPopRequest was used incorrectly"); if (e == null || e.ContentUpdateType == EContentUpdateType.None) { throw exceptionIns; } switch (e.ContentUpdateType) { case EContentUpdateType.PushAsync: Navigation.PushAsync(e.UpdatedContent); break; case EContentUpdateType.PopAsync: Navigation.PopAsync(); break; default: PlaceHolder.Content = e.UpdatedContent.Content; if (e.UpdatedVM != null) { BindingContext = e.UpdatedVM; } break; } }); }
private void OnContentViewUpdateEvent(object sender, UpdatedContentEventArgs e) { lock (contentViewUpdateLock) { if (e == null || e.ContentUpdateType == EContentUpdateType.Buffering) { addToContentViewStack ( new Tuple <ContentPage, IBindableVM>(currentPageInContentView, currentPageVMInContentView) ); RaiseContentViewUpdateEvent?.Invoke(null, new UpdatedContentEventArgs(EContentUpdateType.Buffering, waitingPage)); } else if (e.ContentUpdateType == EContentUpdateType.Pop) { popFromControlViewStack(); } else if (e.ContentUpdateType == EContentUpdateType.PushAsync) { addToContentViewStack ( new Tuple <ContentPage, IBindableVM>(currentPageInContentView, currentPageVMInContentView) ); try { (e.UpdatedContent as IFocusable).Refocus(); } catch (NullReferenceException ex) { Console.WriteLine(ex.Message); } RaiseContentViewUpdateEvent?.Invoke(null, e); } else if (e.ContentUpdateType == EContentUpdateType.PopAsync) { RaiseContentViewUpdateEvent?.Invoke(null, e); Tuple <ContentPage, IBindableVM> stackTop = contentViewStack.Pop(); try { (stackTop.Item1 as IFocusable).Refocus(); } catch (NullReferenceException ex) { Console.WriteLine(ex.Message); } } else //UpdatedContentEventArgs.EContentUpdateType.Push { currentPageInContentView = e.UpdatedContent; currentPageVMInContentView = e.UpdatedVM; Task.Factory.StartNew(() => { try { (currentPageInContentView as IPopulableView).PopulateView(); } catch (NullReferenceException ex) { Console.WriteLine(ex.Message); } }); RaiseContentViewUpdateEvent?.Invoke(null, e); } } }
private async void onSensorTapped(object sender, ItemTappedEventArgs e) { RaiseContentViewUpdateEvent?.Invoke(this, new UpdatedContentEventArgs(UpdatedContentEventArgs.EContentUpdateType.Buffering)); UpdatedContentEventArgs updatedContentEventArgs = null; CameraEventsPage cameraEventsPageBuf = null; await Task.Factory.StartNew(() => { SensorModel sensorBuffer = e.Item as SensorModel; cameraEventsPageBuf = new CameraEventsPage(sensorBuffer.Sensor); cameraEventsPageBuf.RaiseContentViewUpdateEvent += eventsRouter; updatedContentEventArgs = new UpdatedContentEventArgs( UpdatedContentEventArgs.EContentUpdateType.Push, cameraEventsPageBuf, cameraEventsPageBuf.BindableViewModel); }); RaiseContentViewUpdateEvent?.Invoke(this, updatedContentEventArgs); }
private async void onEventTapped(object sender, ItemTappedEventArgs e) { RaiseContentViewUpdateEvent?.Invoke(this, null); UpdatedContentEventArgs updatedContentEventArgs = null; EventDetailsPage eventDetailsPageBuf = null; await Task.Factory.StartNew(() => { EventModel selectedEvent = e.Item as EventModel; eventDetailsPageBuf = new EventDetailsPage(selectedEvent); eventDetailsPageBuf.RaiseContentViewUpdateEvent += eventsRouter; updatedContentEventArgs = new UpdatedContentEventArgs( UpdatedContentEventArgs.EContentUpdateType.Push, eventDetailsPageBuf, eventDetailsPageBuf.BindableViewModel); }); RaiseContentViewUpdateEvent?.Invoke(this, updatedContentEventArgs); }
private async void onSensorNameTapped(EventModel val) { RaiseContentViewUpdateEvent?.Invoke(this, new UpdatedContentEventArgs(UpdatedContentEventArgs.EContentUpdateType.Buffering)); UpdatedContentEventArgs updatedContentEventArgs = null; CameraEventsPage cameraEventsPageBuf = null; Sensor sensorBuffer = val.Sensor; await Task.Factory.StartNew(() => { cameraEventsPageBuf = new CameraEventsPage(sensorBuffer); cameraEventsPageBuf.RaiseContentViewUpdateEvent += eventsRouter; }); await Task.Factory.StartNew(() => updatedContentEventArgs = new UpdatedContentEventArgs( UpdatedContentEventArgs.EContentUpdateType.Push, cameraEventsPageBuf, cameraEventsPageBuf.BindableViewModel )); RaiseContentViewUpdateEvent?.Invoke(this, updatedContentEventArgs); }
private async void cameraEventsListView_ItemSelected(object sender, SelectedItemChangedEventArgs e) { RaiseContentViewUpdateEvent?.Invoke(this, null); EventModel selectedSensorEvent = e.SelectedItem as EventModel; UpdatedContentEventArgs updatedContentEventArgs = null; EventDetailsPage eventDetailsPageBuf = null; await Task.Factory.StartNew(() => { eventDetailsPageBuf = new EventDetailsPage(selectedSensorEvent); eventDetailsPageBuf.RaiseContentViewUpdateEvent += eventsRouter; }); await Task.Factory.StartNew(() => updatedContentEventArgs = new UpdatedContentEventArgs( UpdatedContentEventArgs.EContentUpdateType.Push, eventDetailsPageBuf, eventDetailsPageBuf.BindableViewModel )); RaiseContentViewUpdateEvent?.Invoke(this, updatedContentEventArgs); }
private void eventsRouter(object sender, UpdatedContentEventArgs e) { RaiseContentViewUpdateEvent?.Invoke(this, e); }