/// <summary> /// Loads the necessary prerequisites for DestinationRelationshipViewModel /// </summary> public async Task LoadViewModel(RelatedFeatureQueryResult relatedFeatureQueryResult) { // get the related records for all the destination relationships to make available for editing await GetAvailableValues(); if (relatedFeatureQueryResult.Count() > 0) { var relatedRecord = relatedFeatureQueryResult.First(); // load feature to be able to access popup if (relatedRecord is ArcGISFeature loadableFeature) { await loadableFeature.LoadAsync(); } // choose the selected related record from the list of available values // this will enable seamless binding during editing to the list of available values and to the selected value foreach (var popupManager in OrderedAvailableValues) { if (popupManager.DisplayedFields.Count() > 0 && AreAttributeValuesTheSame(popupManager, relatedRecord)) { PopupManager = popupManager; return; } } } }
/// <summary> /// Loads the necessary prerequisites for OriginRelationshipViewModel /// </summary> public async Task LoadViewModel(RelatedFeatureQueryResult relatedFeatureQueryResult, RelationshipInfo relationshipInfo) { if (relatedFeatureQueryResult.Count() > 0) { OriginRelatedRecords = new ObservableCollection <PopupManager>(); foreach (var relatedRecord in relatedFeatureQueryResult) { // load feature to be able to access popup if (relatedRecord is ArcGISFeature loadableFeature) { await loadableFeature.LoadAsync(); } var popupManager = new PopupManager(new Popup(relatedRecord, relatedRecord.FeatureTable.PopupDefinition)); OriginRelatedRecords.Add(popupManager); RelationshipInfo = relationshipInfo; } // sort list if more than one record if (OriginRelatedRecords.Count > 1) { OriginRelatedRecords = new ObservableCollection <PopupManager>(OriginRelatedRecords.OrderByDescending(x => x.DisplayedFields.First().Value)); } } }