Ejemplo n.º 1
0
    public SliderTrack(Func <int> getter, Action <int> setter, int min, int max, Func <int, string> format = null)
    {
        On <UiLeftClickEvent>(e =>
        {
            _thumb.State  = ButtonState.Clicked;
            _state        = SliderState.Clicked;
            e.Propagating = false;
            // Raise(new SetExclusiveMouseModeEvent(this));
        });
        On <UiLeftReleaseEvent>(e =>
        {
            _state       = SliderState.Normal;
            _thumb.State = ButtonState.Normal;
        });
        On <UiMouseMoveEvent>(e =>
        {
            if (_state != SliderState.DraggingThumb)
            {
                return;
            }

            var thumbExtents = ThumbExtents(_lastExtents);
            float equivalentThumbPosition = e.X - _clickPosition;
            int spareWidth = _lastExtents.Width - thumbExtents.Width;
            int newValue   = (int)((_max - _min) * (equivalentThumbPosition - _lastExtents.X) / spareWidth) + _min;
            if (newValue != _getter())
            {
                _setter(newValue);
            }
        });

        _getter = getter;
        _setter = setter;
        _min    = min;
        _max    = max;
        _thumb  = new SliderThumb(getter, format);
        AttachChild(_thumb);
    }
Ejemplo n.º 2
0
 private void SliderMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     isDragging = false;
     SliderThumb.ReleaseMouseCapture();
 }
Ejemplo n.º 3
0
 private void SliderMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     isDragging = SliderThumb.CaptureMouse();
 }