private bool IncludeLayer(Mapping.Layer layer) { if (layer.ShowInLegend) { return(true); } return(false); }
private void LayerRemoved(Mapping.Layer layer) { layer.PropertyChanged -= Layer_PropertyChanged; if (!IncludeLayer(layer)) { return; } RemoveFromActiveLayers(layer); }
private void LayerAdded(Mapping.Layer layer) { var incc = layer as INotifyPropertyChanged; var listener = new Internal.WeakEventListener <INotifyPropertyChanged, object, PropertyChangedEventArgs>(incc); listener.OnEventAction = (instance, source, eventArgs) => { Layer_PropertyChanged(source, eventArgs); }; listener.OnDetachAction = (instance, weakEventListener) => instance.PropertyChanged -= weakEventListener.OnEvent; incc.PropertyChanged += listener.OnEvent; if (IncludeLayer(layer)) { AddToActiveLayers(layer); } }
private void Layer_PropertyChanged(object sender, PropertyChangedEventArgs e) { Mapping.Layer layer = (Mapping.Layer)sender; if (e.PropertyName == nameof(Mapping.Layer.ShowInLegend)) { bool include = IncludeLayer(layer); if (include && !_activeLayers.Where(vm => vm.LayerContent == layer).Any()) { AddToActiveLayers(layer); } else if (!include && _activeLayers.Where(vm => vm.LayerContent == layer).Any()) { RemoveFromActiveLayers(layer); } } }
private void RemoveFromActiveLayers(Mapping.Layer layer) { var vm = _activeLayers.Where(l => l.LayerContent == layer).FirstOrDefault(); if (vm != null) { var idx = _activeLayers.IndexOf(vm); if (idx >= 0) { _activeLayers.RemoveAt(idx); CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, changedItem: vm, index: idx)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Count))); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Items[]")); } } }
private int GetIndexOfLayer(Mapping.Layer layer) { int i = 0; foreach (var item in (ReverseOrder ? _allLayers.Reverse() : _allLayers)) { if (item == layer) { return(i); } if (IncludeLayer(item) && _activeLayers.Any(l => l.LayerContent == item)) { i++; } } return(-1); }