public object Convert(object value, System.Type targetType, object parameter, CultureInfo culture) { if (value is AddHighlightFeaturesMode) { AddHighlightFeaturesMode mode = (AddHighlightFeaturesMode)value; switch (mode) { case AddHighlightFeaturesMode.Add: return(addToCurrent); case AddHighlightFeaturesMode.FilterExisting: return(searchInCurrent); case AddHighlightFeaturesMode.Reset: default: return(createNew); } } else { return(Binding.DoNothing); } }
protected virtual void AddHighlightFeaturesCore(IEnumerable <Feature> featuresToAdd, AddHighlightFeaturesMode addHighlightFeaturesMode) { switch (addHighlightFeaturesMode) { case AddHighlightFeaturesMode.Reset: highlightFeatureLayer.InternalFeatures.Clear(); goto case AddHighlightFeaturesMode.Add; case AddHighlightFeaturesMode.Add: UsingFeatureLayer(highlightFeatureLayer, (layer) => { featuresToAdd.ForEach(feature => { Feature newFeature = CreateHighlightFeature(feature, (FeatureLayer)feature.Tag); if (!layer.InternalFeatures.Contains(newFeature.Id)) { layer.EditTools.Add(newFeature); } }); }); break; case AddHighlightFeaturesMode.FilterExisting: if (featuresToAdd.Count() > 0) { UsingFeatureLayer(highlightFeatureLayer, (layer) => { var tag = featuresToAdd.First().Tag; var filteredFeatureIds = featuresToAdd.Select(f => f.Id); var highlightFeatures = layer.InternalFeatures.Where(f => f.Tag == tag).ToList(); for (int i = highlightFeatures.Count - 1; i >= 0; i--) { var id = highlightFeatures[i].Id; var index = id.IndexOf("|"); if (index >= 0) { id = id.Substring(0, index); } if (!filteredFeatureIds.Contains(id)) { layer.EditTools.Delete(highlightFeatures[i].Id); } } }); } else { highlightFeatureLayer.InternalFeatures.Clear(); } break; default: break; } }
public void AddHighlightFeatures(IEnumerable <Feature> features, AddHighlightFeaturesMode addHighlightFeaturesMode) { AddHighlightFeaturesCore(features, addHighlightFeaturesMode); }