예제 #1
0
 public static IMouseDataSource DragTarget(this IMouseDataSource src, double opacity = 1)
 {
     if (src.Target is not FrameworkElement target)
     {
         return(src);
     }
     src.BindLocalDragger(
         LocalDragger.MinimumDrag(new DragUiWindow(target, opacity)));
     return(src);
 }
 public void MouseDownHandler(IMouseClickReport report)
 {
     Message = $"Clicked ({report.AbsoluteLocation()}) / ({report.RelativeLocation()})";
     report
     .ExtractSize(out var size)
     .DragSource()
     .BindLocalDragger(
         LocalDragger.MinimumDrag(
             LocalDragger.RelativeToSize(size,
                                         LocalDragger.Action(p => Message = $"Drag to {p}"))));
 }
예제 #3
0
 public static IMouseDataSource Drag(this IMouseDataSource mon, Func <IDataObject> dataToDrag, DragDropEffects allowedEffects,
                                     Action <DragDropEffects>?onDragDone = null)
 {
     mon.BindLocalDragger(
         LocalDragger.MinimumDrag(
             LocalDragger.MaxMoves(1, LocalDragger.Action((_, __) =>
     {
         var ret = new DragHandler(mon).InitiateDrag(dataToDrag(), allowedEffects);
         onDragDone?.Invoke(ret);
     }))));
     return(mon);
 }
예제 #4
0
        public void Abbreviated()
        {
            var fired = 0;
            var ld    = LocalDragger.Action(pt =>
            {
                fired++;
                Assert.Equal(new Point(1, 2), pt);
            });

            Assert.Equal(0, fired);
            ld.NewPoint(MouseMessageType.Up, new Point(1, 2));
            Assert.Equal(1, fired);
        }
예제 #5
0
        public void PassThrough()
        {
            var fired = 0;
            var ld    = LocalDragger.Action((mmt, pt) =>
            {
                fired++;
                Assert.Equal(MouseMessageType.Up, mmt);
                Assert.Equal(new Point(1, 2), pt);
            });

            Assert.Equal(0, fired);
            ld.NewPoint(MouseMessageType.Up, new Point(1, 2));
            Assert.Equal(1, fired);
        }