예제 #1
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);
            }
        }
예제 #2
0
        private void RowDragHelperOnRowSwitched(object sender, RowSwitchEventArgs e)
        {
            var primaryItem   = OrderGrid.Items[e.PrimaryRowIndex] as CustomProgram;
            var displacedItem = OrderGrid.Items[e.DisplacedRowIndex] as CustomProgram;

            SetOrder(primaryItem, e.PrimaryRowIndex);
            SetOrder(displacedItem, e.DisplacedRowIndex);
        }
예제 #3
0
        public static void OnRowSwitch(RowSwitchEventArgs e)
        {
            EventHandler <RowSwitchEventArgs> handler = RowSwitched;

            handler?.Invoke(typeof(RowDragHelper), e);
        }