void IDropTarget.Drop(UIElement draggedElement, RelativePoint mousePosition)
        {
            var cell = draggedElement as ColumnManagerCell;

            if (cell == null)
            {
                return;
            }

            var draggedElementContext = DataGridControl.GetDataGridContext(draggedElement);
            var lastIndex             = draggedElementContext.GroupLevelDescriptions.Count - 1;

            if (lastIndex >= 0)
            {
                var groupByItem = this.ItemContainerGenerator.ContainerFromIndex(lastIndex) as GroupByItem;
                if (groupByItem == null)
                {
                    throw new DataGridInternalException("groupByItem is null.");
                }

                groupByItem.HideDropMark();
            }

            var dataGridContext = DataGridControl.GetDataGridContext(this);
            var dataGridControl = (dataGridContext != null) ? dataGridContext.DataGridControl : null;

            GroupingHelper.AppendNewGroupFromColumnManagerCell(cell, dataGridControl);
        }
        void IDropTarget.Drop(UIElement draggedElement)
        {
            ColumnManagerCell cell = draggedElement as ColumnManagerCell;

            if (cell == null)
            {
                return;
            }

            HierarchicalGroupByControlNode hierarchicalGroupByControlNode = this.GetHierarchicalGroupByControlNodeFromColumnManagerCell(cell);

            // It may not be visible
            if (hierarchicalGroupByControlNode != null)
            {
                hierarchicalGroupByControlNode.HideFarDropMark(cell);
            }

            DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this);

            DataGridControl parentGrid = (dataGridContext != null)
        ? dataGridContext.DataGridControl
        : null;

            GroupingHelper.AppendNewGroupFromColumnManagerCell(cell, parentGrid);

            // Notify groups have changed for NoGroupContent
            this.UpdateHasGroups();
        }
        void IDropTarget.Drop(UIElement draggedElement)
        {
            ColumnManagerCell cell = draggedElement as ColumnManagerCell;

            if (cell == null)
            {
                return;
            }

            HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(this);

            if (parentGBC == null)
            {
                throw new DataGridInternalException("The hierarchical group-by control node must be rooted by a HierarchicalGroupByControl.");
            }

            DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this);

            DataGridControl parentGrid = (dataGridContext != null)
        ? dataGridContext.DataGridControl
        : null;

            GroupingHelper.AppendNewGroupFromColumnManagerCell(cell, parentGrid);

            // Notify groups have changed for NoGroupContent
            parentGBC.UpdateHasGroups();

            HierarchicalGroupByControlNode hierarchicalGroupByControlNode = parentGBC.GetHierarchicalGroupByControlNodeFromColumnManagerCell(cell);

            if (hierarchicalGroupByControlNode == null)
            {
                return;
            }

            hierarchicalGroupByControlNode.HideFarDropMark(cell);

            this.HideFarDropMark();
        }
Exemple #4
0
        void IDropTarget.Drop(UIElement draggedElement)
        {
            ColumnManagerCell cell = draggedElement as ColumnManagerCell;

            if (cell == null)
            {
                return;
            }

            DataGridContext draggedDetailContext = DataGridControl.GetDataGridContext(draggedElement);

            int lastIndex = draggedDetailContext.GroupLevelDescriptions.Count - 1;

            if (lastIndex > -1)
            {
                GroupByItem groupByItem = this.ItemContainerGenerator.ContainerFromIndex(lastIndex) as GroupByItem;

                Debug.Assert(groupByItem != null);
                if (groupByItem == null)
                {
                    throw new DataGridInternalException();
                }

                groupByItem.HideDropMark();
            }
            else
            {
                this.HideDropMark();
            }

            DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this);

            DataGridControl parentGrid = (dataGridContext != null)
        ? dataGridContext.DataGridControl
        : null;

            GroupingHelper.AppendNewGroupFromColumnManagerCell(cell, parentGrid);
        }
        void IDropTarget.Drop(UIElement draggedElement)
        {
            ColumnManagerCell draggedColumnManagerCell = draggedElement as ColumnManagerCell;

            if (m_dropMarkAdorner != null)
            {
                GroupLevelDescription draggedOverGroupLevelDescription = this.Content as GroupLevelDescription;

                DropMarkAlignment alignment = m_dropMarkAdorner.Alignment;
                this.HideDropMark();

                if (draggedColumnManagerCell != null)
                {
                    DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this);

                    DataGridControl parentGrid = (dataGridContext != null)
            ? dataGridContext.DataGridControl
            : null;

                    GroupingHelper.AddNewGroupFromColumnManagerCell(draggedColumnManagerCell, draggedOverGroupLevelDescription, alignment, parentGrid);
                }
                else
                {
                    HierarchicalGroupByItem draggedGroupByItem = draggedElement as HierarchicalGroupByItem;

                    if (draggedGroupByItem == null)
                    {
                        return;
                    }

                    GroupLevelDescription draggedGroupLevelDescription = draggedGroupByItem.Content as GroupLevelDescription;

                    DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this);

                    DataGridControl parentDataGridControl = (dataGridContext != null)
            ? dataGridContext.DataGridControl
            : null;

                    GroupLevelDescription destinationGroupLevelDescription = this.Content as GroupLevelDescription;

                    GroupingHelper.MoveGroupDescription(this.ParentColumns, this.ParentGroupDescriptions,
                                                        destinationGroupLevelDescription, alignment,
                                                        draggedGroupLevelDescription, parentDataGridControl);
                }
            }
            else
            {
                // We try to add a new Group which is not in the current GroupLevelDescriptions
                if (draggedColumnManagerCell == null)
                {
                    return;
                }

                DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this);

                DataGridControl parentGrid = (dataGridContext != null)
          ? dataGridContext.DataGridControl
          : null;

                GroupingHelper.AppendNewGroupFromColumnManagerCell(draggedColumnManagerCell, parentGrid);
            }

            HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(this);

            Debug.Assert(parentGBC != null);
            if (parentGBC == null)
            {
                throw new DataGridInternalException("A hierarchical group-by item must be rooted by a HierarchicalGroupByControl.");
            }

            // Notify groups have changed for NoGroupContent
            parentGBC.UpdateHasGroups();
        }