Esempio n. 1
0
        /// <summary>
        /// Updates the value when the thumb position is changed.
        /// </summary>
        /// <param name="d">The dependency object providing the property that is changed.</param>
        /// <param name="e"></param>
        private static void MaxPositionPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            RangeSlider slider = (RangeSlider)d;

            if (slider.Orientation == Orientation.Horizontal)
            {
                //double o = slider._MaxThumb.ActualWidth + slider._MinThumb.ActualWidth;
                //double w = slider.ActualWidth - o;

                //double r = slider.Max - slider.Min;

                //double f = r / w;
                //// min pos 0 - 85
                //Console.WriteLine($"ACT = {w}");
                //Console.WriteLine($"FAC = {f}");
                //Console.WriteLine($"VAL = {((slider.MaxPosition - slider._MaxThumb.ActualWidth) * f)}");

                slider.MaxValue = ((slider.Max - slider.Min) / (slider.ActualWidth - slider._MinThumb.ActualWidth - slider._MaxThumb.ActualWidth) * (slider.MaxPosition - slider._MaxThumb.ActualWidth)) + slider.Min;
                slider.Range    = (slider.MaxValue - slider.MinValue);
            }
            else
            {
                slider.MaxValue = (((slider.Max - slider.Min) / (slider.ActualHeight - slider._MinThumb.ActualWidth / 2 - slider._MaxThumb.ActualHeight / 2)) * slider.MaxPosition) + slider.Min;
                slider.Range    = (slider.MaxValue - slider.MinValue);
            }


            Console.WriteLine($"MaxValue: {slider.MaxValue}");
            Console.WriteLine($"Range: {Math.Floor(slider.Range)}");
        }
Esempio n. 2
0
        private static object CoerceMaxValueProperty(DependencyObject d, object baseValue)
        {
            RangeSlider slider = (RangeSlider)d;
            double      value  = (double)baseValue;

            value = Math.Min(value, slider.Max);
            value = Math.Max(value, slider.MinValue);

            return(value);
        }
Esempio n. 3
0
        /// <summary>
        /// Invalidates the thumb position limits.
        /// </summary>
        /// <param name="d">The dependency object providing the property to invalidate.</param>
        /// <param name="baseValue">The value to invalidate.</param>
        /// <returns>The invalidated value.</returns>
        private static object CoerceMaxPositionProperty(DependencyObject d, object baseValue)
        {
            RangeSlider slider = (RangeSlider)d;
            double      value  = (double)baseValue;

            if (slider.Orientation == Orientation.Horizontal)
            {
                value = Math.Min(value, slider.ActualWidth - (slider._MaxThumb.ActualWidth / 2) - slider._MaxThumb.Margin.Right);
                value = Math.Max(value, slider.MinPosition + (slider._MinThumb.ActualWidth / 2) + (slider._MaxThumb.ActualWidth / 2) + slider._MinThumb.Margin.Left);
            }
            else
            {
                value = Math.Min(value, slider.ActualWidth - (slider._MaxThumb.ActualWidth));
                value = Math.Max(value, slider.MinPosition + (slider._MinThumb.ActualHeight / 2) + (slider._MaxThumb.ActualHeight / 2));
            }

            return(value);
        }