示例#1
0
        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();
        }
示例#2
0
        /// <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;
            }
        }