public void ItemScannedAction(QrMessage message) { try { var qrId = message.ParseQrCode(); var activeScanningMethod = appStorage.GetScanningAction(); if (activeScanningMethod == ScanningAction.RelocateItem) { Boolean done = false; Device.BeginInvokeOnMainThread(async() => { await NavigateFromMenu((int)MenuItemType.RelocateItems); done = true; }); while (!done) { // Wait for the navigate to complete. } } if (Detail.GetType() == typeof(NavigationPage)) { var currentPage = ((NavigationPage)Detail).CurrentPage; if (currentPage.GetType() == typeof(UpdateMdAssignedItemPage)) { ((UpdateMdAssignedItemPage)currentPage).UpdatedScannedItem(qrId); return; } var root = ((NavigationPage)Detail).RootPage; if (root.GetType() == typeof(MultiItemUpdatePage)) { ((MultiItemUpdatePage)root).AddQrId(qrId); return; } } var detailsModel = new ItemDetailViewModel(); detailsModel.loadFromQrId(qrId); var detailsPage = ItemDetailPage.CreateItemDetailPage(detailsModel); var newPage = new NavigationPage(detailsPage); Device.BeginInvokeOnMainThread(async() => { await NavigateToNewPageFromApp(newPage); }); } catch (Exception ex) { var exMessage = CdbApiFactory.ParseApiException(ex); Debug.WriteLine(exMessage); Device.BeginInvokeOnMainThread(async() => { await DisplayAlert(exMessage.SimpleName, exMessage.Message, "OK"); }); } }
async void OnItemSelected(object sender, SelectedItemChangedEventArgs args) { var item = args.SelectedItem as ItemDetailViewModel; if (item == null) { return; } // Load the latest version of the item. int?itemId = item.Item.Id; var itemObj = itemApi.GetItemById(itemId); var newItem = new ItemDetailViewModel(itemObj); var detailPage = ItemDetailPage.CreateItemDetailPage(newItem); await Navigation.PushAsync(detailPage); // Manually deselect item. ItemsListView.SelectedItem = null; }