Exemplo n.º 1
0
        private static double CalculateTrackOffset(MeteredSlider slider)
        {
            double arbitraryScalingFactor = 1.4;        // don't like this!
            double targetOffset           = -slider.ActualHeight * slider.SliderPosition / arbitraryScalingFactor;

            return(targetOffset);
        }
Exemplo n.º 2
0
        private static double CalculateThumbSize(MeteredSlider slider)
        {
            double distanceFromCenter = Math.Abs(slider.SliderPosition - 0.5);
            double angleInRadians     = Math.Asin(2 * distanceFromCenter * 0.8);
            double targetSize         = Math.Cos(angleInRadians) * FullThumbHeight;

            return(targetSize);
        }
Exemplo n.º 3
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            // The value input is not actually used (because the conversion uses properties of the slider, which comes in as the parameter
            //  input), but it should be the slider's Value property, which will force this calculation to be rerun at the right moments.

            // The parameter input is a MeteredSlider control, or a FrameworkElement whose datacontext is a reference to the whole slider,
            //  either of which must be passed in using x:Reference because binding doesn't work on the parameter input.

            MeteredSlider slider = (parameter as MeteredSlider) ?? (parameter as FrameworkElement)?.DataContext as MeteredSlider;

            if (slider == null)
            {
                Console.WriteLine("The ModWheelConverters require, as a parameter, a FrameworkElement whose datacontext is a reference to the MeteredSlider control.");
                return(FullThumbHeight);
            }

            double result = _conversion(slider);

            return(result);
        }