示例#1
0
        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);
 }
示例#3
0
        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);
            }
        }
示例#4
0
 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);
        }