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); }
private void SliderMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { isDragging = false; SliderThumb.ReleaseMouseCapture(); }
private void SliderMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { isDragging = SliderThumb.CaptureMouse(); }