自定义 MouseGesture类的派生类,取名为 MouseWheelGesture,代码实现如下所示:
class MouseWheelGesture : MouseGesture
{
public MouseWheelGesture() : base(MouseAction.WheelClick) { }
public MouseWheelGesture(ModifierKeys modifierKeys) : base(MouseAction.WheelClick, modifierKeys) { }
public WheelDirection Direction { get; set; }
// 定义两个 Gesture对象,向上和向下
public static MouseWheelGesture CtrlUp => new MouseWheelGesture(ModifierKeys.Control) { Direction = WheelDirection.Up };
public static MouseWheelGesture CtrlDown => new MouseWheelGesture(ModifierKeys.Control) { Direction = WheelDirection.Down };
public override bool Matches(object targetElement, InputEventArgs inputEventArgs)
{
if (base.Matches(targetElement, inputEventArgs) == false) return false;
if (inputEventArgs is MouseWheelEventArgs == false) return false;
var arg = inputEventArgs as MouseWheelEventArgs;
switch (Direction)
{
case WheelDirection.None:
return arg.Delta == 0;
case WheelDirection.Up:
return arg.Delta > 0;
case WheelDirection.Down:
return arg.Delta < 0;
default:
return false;
}
}
}
// 枚举滑轮的几种情况
public enum WheelDirection
{
None,
Up,
Down
}
绑定UI界面如下所示: