void area_DragDelta(object sender, DragAreaItemArgs<DragDeltaEventArgs> e)
        {
            m_RowsAreaContainer.IsReadyToDrop = false;
            m_ColumnsAreaContainer.IsReadyToDrop = false;
            m_FilterAreaContainer.IsReadyToDrop = false;
            m_DataAreaContainer.IsReadyToDrop = false;

            Point m_DragDelta = new Point(m_PrevDrag.X + e.Args.HorizontalChange, m_PrevDrag.Y + e.Args.VerticalChange);

            PivotAreaContainer container = sender as PivotAreaContainer;

            // Подсветка областей, куда разрешено таскание
            if (container != m_RowsAreaContainer)
            {
                Rect m_RowsArea_Bounds = AgControlBase.GetSLBounds(m_RowsAreaContainer);
                if (m_RowsArea_Bounds.Contains(m_DragDelta) && CanDragToArea(m_RowsAreaContainer, e.Item))
                {
                    m_RowsAreaContainer.IsReadyToDrop = true;
                }
            }

            if (container != m_ColumnsAreaContainer)
            {
                Rect m_ColumnsArea_Bounds = AgControlBase.GetSLBounds(m_ColumnsAreaContainer);
                if (m_ColumnsArea_Bounds.Contains(m_DragDelta) && CanDragToArea(m_ColumnsAreaContainer, e.Item))
                {
                    m_ColumnsAreaContainer.IsReadyToDrop = true;
                }
            }

            if (container != m_FilterAreaContainer)
            {
                Rect m_FilterArea_Bounds = AgControlBase.GetSLBounds(m_FilterAreaContainer);
                if (m_FilterArea_Bounds.Contains(m_DragDelta) && CanDragToArea(m_FilterAreaContainer, e.Item))
                {
                    m_FilterAreaContainer.IsReadyToDrop = true;
                }
            }

            if (container != m_DataAreaContainer)
            {
                Rect m_DataArea_Bounds = AgControlBase.GetSLBounds(m_DataAreaContainer);
                if (m_DataArea_Bounds.Contains(m_DragDelta) && CanDragToArea(m_DataAreaContainer, e.Item))
                {
                    m_DataAreaContainer.IsReadyToDrop = true;
                }
            }

            m_PrevDrag = m_DragDelta;
        }
        void area_DragStarted(object sender, DragAreaItemArgs<DragStartedEventArgs> e)
        {
            m_DragStart = new Point(e.Args.HorizontalOffset, e.Args.VerticalOffset);
            m_PrevDrag = m_DragStart;

        }
        void area_DragCompleted(object sender, DragAreaItemArgs<DragCompletedEventArgs> e)
        {
            try
            {
                PivotAreaContainer container = sender as PivotAreaContainer;

                if (container != null)
                {
                    Point point = new Point(m_DragStart.X + e.Args.HorizontalChange, m_DragStart.Y + e.Args.VerticalChange);
                    // Если перетаскивание за пределы контрола, содержащего все 4 области, то удалить элемент списка (102.94164)
                    if (!AgControlBase.GetSLBounds(Areas_LayoutRoot).Contains(point))
                    {
                        container.RemoveItem(e.Item);
                        return;
                    }

                    if (m_RowsAreaContainer.IsReadyToDrop ||
                        m_ColumnsAreaContainer.IsReadyToDrop ||
                        m_FilterAreaContainer.IsReadyToDrop ||
                        m_DataAreaContainer.IsReadyToDrop)
                    {
                        // Отписываемся от события на удаление. т.к. там мы только меняем стиль текста в узле дерева. А при перетаскивании у нас элемент останется задействованным.
                        container.ItemRemoved -= new EventHandler<AreaItemArgs>(AreaContainer_ItemRemoved);
                        container.RemoveItem(e.Item, false);
                        container.ItemRemoved += new EventHandler<AreaItemArgs>(AreaContainer_ItemRemoved);

                        if (m_RowsAreaContainer.IsReadyToDrop)
                        {
                            m_RowsAreaContainer.AddItem(e.Item);
                        }

                        if (m_ColumnsAreaContainer.IsReadyToDrop)
                        {
                            m_ColumnsAreaContainer.AddItem(e.Item);
                        }

                        if (m_FilterAreaContainer.IsReadyToDrop)
                        {
                            m_FilterAreaContainer.AddItem(e.Item);
                        }

                        if (m_DataAreaContainer.IsReadyToDrop)
                        {
                            m_DataAreaContainer.AddItem(e.Item);
                        }
                    }
                }
            }
            finally
            {
                m_RowsAreaContainer.IsReadyToDrop = false;
                m_ColumnsAreaContainer.IsReadyToDrop = false;
                m_FilterAreaContainer.IsReadyToDrop = false;
                m_DataAreaContainer.IsReadyToDrop = false;
            }
        }