private static object RateCoerceValue(DependencyObject d, object value)
        {
            RangeBase3D rb   = (RangeBase3D)d;
            double      rate = (rb.Value - rb.Minimum) / (rb.Maximum - rb.Minimum);

            return(rate);
        }
        /// <summary>
        /// Callback called when the Content property's value has changed.
        /// </summary>
        /// <param name="d">Sender object</param>
        /// <param name="e">Callback arguments</param>
        private static void ContentPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            RangeBase3D rb = (RangeBase3D)d;

            rb._selectionIndicator = (UIElement3D)rb.FindName("PART_SelectionIndicator");
            rb.AdjustSelectionIndicatorVisibility();
        }
        /// <summary>
        /// Callback called when the IsSelected property's value has changed.
        /// </summary>
        /// <param name="d">Sender object.</param>
        /// <param name="e">Event arguments.</param>
        public static void IsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            RangeBase3D rb = (RangeBase3D)d;

            rb.AdjustSelectionIndicatorVisibility();

            RangeElementSelectionManager.IsSelectedPropertyChanged(d, e);
        }
        private static object ValueCoerceValue(DependencyObject d, object value)
        {
            RangeBase3D rb      = ((RangeBase3D)d);
            double      minimum = rb.Minimum;
            double      maximum = rb.Maximum;

            if (((double)value) < minimum)
            {
                return(minimum);
            }
            else if (((double)value) > maximum)
            {
                return(maximum);
            }
            return(value);
        }