コード例 #1
0
        public void OnMouseDown(Grid target, IUnityContainer container, MouseEventArgs e)
        {
            if (target != container.Resolve <Grid>(Key))
            {
                return;
            }

            var viewport = container.Resolve <Rectangle>(Key);

            var rowSpan    = Grid.GetRowSpan(viewport);
            var currentRow = Grid.GetRow(viewport);

            var row = target.GetRow(e.GetPosition(target));

            if (!row.HasValue)
            {
                return;
            }

            while (row + rowSpan / 2 > target.RowDefinitions.Count)
            {
                row--;
            }

            Grid.SetRow(viewport, Math.Max(row.Value - rowSpan / 2, 0));

            var colSpan    = Grid.GetColumnSpan(viewport);
            var currentCol = Grid.GetColumn(viewport);

            var col = target.GetColumn(e.GetPosition(target));

            if (!col.HasValue)
            {
                return;
            }

            while (col + colSpan / 2 > target.ColumnDefinitions.Count)
            {
                col--;
            }

            Grid.SetColumn(viewport, Math.Max(col.Value - colSpan / 2, 0));

            if (currentRow != row || currentCol != col)
            {
                ViewportEventDispatcher.DispatchMoveEvent(viewport, container);
            }
        }
コード例 #2
0
        public void OnMouseWheel(Grid target, IUnityContainer container, MouseWheelEventArgs e)
        {
            if (target != container.Resolve <Grid>(Key))
            {
                return;
            }

            var viewport = container.Resolve <Rectangle>(Key);

            var rowSpan    = Grid.GetRowSpan(viewport);
            var currentRow = Grid.GetRow(viewport);
            var row        = currentRow - (Math.Sign(e.Delta) * rowSpan / 2);
            var last       = Math.Max((target.RowDefinitions.Count) - Grid.GetRowSpan(viewport), 0);

            row = Math.Max(row, 0);
            row = Math.Min(row, last);

            Grid.SetRow(viewport, row);

            if (currentRow != row)
            {
                ViewportEventDispatcher.DispatchMoveEvent(viewport, container);
            }
        }