コード例 #1
0
ファイル: MeteredSlider.cs プロジェクト: neilmckg/WPFSynth
        private static void HandleValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MeteredSlider ss = d as MeteredSlider;

            //if (ss != null)
            //{
            //    if (ss.Minimum == -1)
            //        Console.WriteLine("Hello");
            //}

            if (ss != null && !ss._isUpdating)
            {
                ss._isUpdating = true;

                if (ss.Indenting == IndentRule.Always || (ss.Indenting == IndentRule.ShiftKey && (System.Windows.Input.Keyboard.Modifiers == ModifierKeys.Shift || System.Windows.Input.Keyboard.IsKeyToggled(Key.CapsLock))))
                {
                    if (ss.IsEnabled && ss.IsVisible && ss.ActualHeight > 0 && Mouse.LeftButton == MouseButtonState.Pressed && ss.IsMouseOver)
                    {
                        ss.SnapIfWithinIndentRange();
                    }
                }

                ss.SliderPosition = ss._rangeConverter.SourceToTarget(ss.Value);
                //if (ss.Minimum == -1)
                //    Console.WriteLine(ss.Value.ToString("0.0000") + " --> " + ss.SliderPosition.ToString("0.0000"));

                //if (ss.Name == "Test")
                //    Console.WriteLine(ss.SliderPosition);

                ss._isUpdating = false;

                ss.OnValueChanged();
            }
        }
コード例 #2
0
ファイル: MeteredSlider.cs プロジェクト: neilmckg/WPFSynth
        private static void OnTicksSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MeteredSlider ss = d as MeteredSlider;

            if (ss == null)
            {
                return;
            }

            BindingExpressionBase beb = BindingOperations.GetBindingExpressionBase(d, TicksSourceProperty);

            if (beb != null)
            {
                throw new InvalidOperationException("The TicksSource property doesn't support data binding. Use StaticResource or DynamicResource or x:Static instead.");
            }


            ss._ticks.Clear();

            SliderTick[] newTicks = e.NewValue as SliderTick[];

            if (newTicks != null)
            {
                newTicks.Execute(ss._ticks.Add);
            }
        }
コード例 #3
0
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double dblValue;

            if (value == null)
            {
                return(value);
            }
            if (!double.TryParse(value.ToString(), out dblValue))
            {
                return(value);
            }

            MeteredSlider ss = parameter as MeteredSlider;

            if (ss == null)
            {
                return(0);
            }

            _converter.SourceMin   = ss.Minimum;
            _converter.SourceMax   = ss.Maximum;
            _converter.ScaleFactor = ss.ScaleFactor;

            return(_converter.TargetToSource(dblValue));
        }
コード例 #4
0
ファイル: MeteredSlider.cs プロジェクト: neilmckg/WPFSynth
        private static void HandleSliderPositionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MeteredSlider ss = d as MeteredSlider;

            if (ss != null && !ss._isUpdating)
            {
                ss.Value = ss._rangeConverter.TargetToSource(ss.SliderPosition);
            }
        }
コード例 #5
0
ファイル: MeteredSlider.cs プロジェクト: neilmckg/WPFSynth
        private static void HandleRangePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MeteredSlider ss = d as MeteredSlider;

            if (ss != null)
            {
                ss.UpdateRangeProperties();
            }
        }
コード例 #6
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double dblValue;

            if (value == null)
            {
                return(value);
            }
            if (!double.TryParse(value.ToString(), out dblValue))
            {
                return(value);
            }

            MeteredSlider    ss = parameter as MeteredSlider;
            FrameworkElement fe = parameter as FrameworkElement;

            if (ss == null && fe != null)
            {
                if (fe.DataContext is MeteredSlider)
                {
                    ss = fe.DataContext as MeteredSlider;
                }
                if (fe.Tag is MeteredSlider)
                {
                    ss = fe.Tag as MeteredSlider;
                }
            }

            if (ss == null)
            {
                return(0);
            }

            _converter.SourceMin   = ss.Minimum;
            _converter.SourceMax   = ss.Maximum;
            _converter.ScaleFactor = ss.ScaleFactor;

            double result = _converter.SourceToTarget(dblValue);

            return(result);
        }