/// <summary>
        /// IntervalProperty property changed handler.
        /// </summary>
        /// <param name="d">HeatMapLayer that changed its Interval.</param>
        /// <param name="e">DependencyPropertyChangedEventArgs.</param>
        private static void OnIntervalPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if ((int)e.NewValue < 1)
            {
                throw new ArgumentOutOfRangeException("Intensity");
            }
            ConfigurableHeatMapLayer layer = d as ConfigurableHeatMapLayer;

            layer.OnLayerChanged();
        }
        /// <summary>
        /// ResolutionProperty property changed handler.
        /// </summary>
        /// <param name="d">HeatMapLayer that changed its Resolution.</param>
        /// <param name="e">DependencyPropertyChangedEventArgs.</param>
        private static void OnResolutionPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ConfigurableHeatMapLayer layer = d as ConfigurableHeatMapLayer;
            double newValue = (double)e.NewValue;

            if (newValue <= 0 || newValue > 1)
            {
                throw new ArgumentOutOfRangeException("Resolution must be between 0 and 1.");
            }
            layer.OnLayerChanged();
        }
        /// <summary>
        /// GradientProperty property changed handler.
        /// </summary>
        /// <param name="d">HeatMapLayer that changed its Gradient.</param>
        /// <param name="e">DependencyPropertyChangedEventArgs.</param>
        private static void OnGradientPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ConfigurableHeatMapLayer dp = d as ConfigurableHeatMapLayer;

            dp.OnLayerChanged();
        }