private void UpdateLayerSettings(Layer layer) { if (layer == null || !IsLayerAutoUpdateCapable(layer)) { return; } // find the helper that manages the auto-update for this layer LayerAutoUpdateHelper helper = null; _autoUpdateHelpersDict.TryGetValue(layer, out helper); if (helper == null) { // All FeatureLayers need a helper created for them in case the user // chooses to enable the layer's auto-update at a later time helper = new LayerAutoUpdateHelper { FilteredLayer = layer, ParentBehavior = this, IsEnabled = layer.Visible }; // Add to lookup dictionary _autoUpdateHelpersDict.Add(layer, helper); //clear all listeners and their event subscriptions ClearPropertyListeners(layer); // Set the layer's property changed delegate to point to our method DependencyProperty listener = Utility.NotifyOnAttachedPropertyChanged("AutoUpdateInterval", layer, OnLayerPropertyChanged, LayerExtensions.GetAutoUpdateInterval(layer)); if (!autoUpdateIntervalProps.ContainsKey(layer)) { autoUpdateIntervalProps.Add(layer, listener); } else { autoUpdateIntervalProps[layer] = listener; } // We also want to know when the layer visibility is changed so that we can // stop the refresh timers listener = Utility.NotifyOnAttachedPropertyChanged("Visible", layer, OnLayerVisibilityChanged, layer.Visible); if (!visibleProps.ContainsKey(layer)) { visibleProps.Add(layer, listener); } else { visibleProps[layer] = listener; } } helper.SettingsHaveChanged(); }
/// <summary> /// Callback method for when the layer visibility is changed (ex: when the user unchecks the layer /// checkbox in Map Contents. /// </summary> public void OnLayerVisibilityChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) { var layer = o as Layer; if (layer == null) { return; } LayerAutoUpdateHelper helper = null; _autoUpdateHelpersDict.TryGetValue(layer, out helper); if (helper != null) { helper.IsEnabled = layer.Visible; } }