Widget CreateSpinButton(SpinButtonType type) { var button = new Widget { HitTestTarget = true, LayoutCell = new LayoutCell { StretchX = 0 }, MinWidth = SpinButtonPresenter.ButtonWidth, PostPresenter = new SpinButtonPresenter(type) }; button.Awoken += instance => { var dragGesture = new DragGesture(); dragGesture.Recognized += () => Tasks.Add(SpinByDragTask(dragGesture)); var clickGesture = new ClickGesture(() => { var delta = (type == SpinButtonType.Additive ? 1 : -1) * Step; if (Input.IsKeyPressed(Key.Shift)) { delta *= 10f; } else if (Input.IsKeyPressed(Key.Control)) { delta *= 0.1f; } if (!IsReadOnly) { Value += delta; } }); var gestures = ((Widget)instance).Gestures; gestures.Add(clickGesture); gestures.Add(dragGesture); }; return(button); }
public SpinButtonPresenter(SpinButtonType type) { this.type = type; }