Exemple #1
0
        private static void RowDragOnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs mouseButtonEventArgs)
        {
            //Get row index from click
            //Adapted from https://social.msdn.microsoft.com/Forums/vstudio/en-US/22373fc7-c677-46a1-80ff-3e262836ecc1/right-click-in-wpf-datagrid?forum=wpf
            DataGrid g = sender as DataGrid;
            Point    p = mouseButtonEventArgs.GetPosition(g);

            if (g == null)
            {
                return;
            }

            DataGridRow selectedRow = GetRowFromPoint(g, p);

            if (selectedRow == null)
            {
                return;
            }

            //Prevent user from reordering processes not marked as orderable
            var isDraggable = (selectedRow.Item as CompileProcess)?.IsDraggable;

            if (isDraggable != null && !(bool)isDraggable)
            {
                return;
            }

            RowDragHelper.SetDraggedItem((DataGrid)sender, selectedRow.Item);
        }
Exemple #2
0
        private static void ExchangeRows(object sender, object target)
        {
            var draggedRow = RowDragHelper.GetDraggedItem(sender as DependencyObject);

            if (draggedRow == null)
            {
                return;
            }

            if (target != null && !ReferenceEquals(draggedRow, target))
            {
                var list = ((DataGrid)sender).ItemsSource as IList;
                if (list == null)
                {
                    return;
                }

                int oldIndex = list.IndexOf(draggedRow);

                var targetIndex = list.IndexOf(target);
                list.Remove(draggedRow);
                list.Insert(targetIndex, draggedRow);

                //Console.WriteLine("Row Switch");

                RowSwitchEventArgs args = new RowSwitchEventArgs()
                {
                    PrimaryRowIndex   = targetIndex,
                    DisplacedRowIndex = oldIndex
                };

                OnRowSwitch(args);
            }
        }
Exemple #3
0
        private static void RowDragOnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs mouseButtonEventArgs)
        {
            var draggedItem = RowDragHelper.GetDraggedItem(sender as DependencyObject);

            if (draggedItem == null)
            {
                return;
            }

            //disabled because it seems to glitch out when 2 custom programs are swapped
            //ExchangeRows(sender, ((DataGrid) sender).SelectedItem);

            ((DataGrid)sender).SelectedItem = draggedItem;
            RowDragHelper.SetDraggedItem(sender as DataGrid, null);
        }
Exemple #4
0
        private static void RowDragOnMouseMove(object sender, MouseEventArgs mouseEventArgs)
        {
            var      draggedRow = RowDragHelper.GetDraggedItem(sender as DependencyObject);
            DataGrid g          = sender as DataGrid;

            if (draggedRow == null || g == null)
            {
                return;
            }

            var targetRow = GetRowFromPoint(g, mouseEventArgs.GetPosition(g));

            if (targetRow == null)
            {
                return;
            }

            ExchangeRows(g, targetRow.Item);
        }