示例#1
0
        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);
        }
示例#2
0
 public SpinButtonPresenter(SpinButtonType type)
 {
     this.type = type;
 }