Example #1
0
 public void Dispose()
 {
     Model = null;
     _splitter.DragStarted   -= OnDragStarted;
     _splitter.DragDelta     -= OnDragDelta;
     _splitter.DragCompleted -= OnDragCompleted;
     _splitter = null;
     _layoutContent.Dispose();
 }
Example #2
0
 private void _InitChildren()
 {
     _layoutContent = new LayoutContentControl()
     {
         HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, BorderThickness = new Thickness(1), BorderBrush = new SolidColorBrush(new Color()
         {
             A = 0xFF, R = 0xCC, G = 0xCE, B = 0xDB
         })
     };
     _splitter                = new LayoutDragSplitter();
     _splitter.DragStarted   += OnDragStarted;
     _splitter.DragDelta     += OnDragDelta;
     _splitter.DragCompleted += OnDragCompleted;
     _splitter.Background     = ResourceManager.SplitterBrushVertical;
 }
Example #3
0
        /// <summary>
        /// 计算拖动时的上下边界值
        /// </summary>
        /// <param name="splitter">拖动的对象</param>
        /// <param name="x1">下界</param>
        /// <param name="x2">上界</param>
        private void _ComputeDragBounds(LayoutDragSplitter splitter, ref double x1, ref double x2)
        {
            var pToScreen = RootPanel.PointToScreenDPIWithoutFlowDirection(new Point());

            switch (Side)
            {
            case DockSide.Left:
            case DockSide.Right:
                _dragBound1 = pToScreen.X;
                _dragBound2 = pToScreen.X + RootPanel.ActualWidth - Constants.SplitterSpan / 2;
                break;

            case DockSide.Top:
            case DockSide.Bottom:
                _dragBound1 = pToScreen.Y;
                _dragBound2 = pToScreen.Y + RootPanel.ActualHeight - Constants.SplitterSpan / 2;
                break;
            }
        }
Example #4
0
        private void _CreateDragPopup(LayoutDragSplitter splitter)
        {
            pToScreen = this.PointToScreenDPIWithoutFlowDirection(new Point());
            var transfrom      = splitter.TransformToAncestor(this);
            var _pToInterPanel = transfrom.Transform(new Point(0, 0));

            pToScreen.X += _pToInterPanel.X;
            pToScreen.Y += _pToInterPanel.Y;

            switch (Side)
            {
            case DockSide.Left:
            case DockSide.Right:
                Model.DesiredWidth = ActualWidth - Constants.SplitterSpan / 2;
                break;

            case DockSide.Top:
            case DockSide.Bottom:
                Model.DesiredHeight = ActualHeight - Constants.SplitterSpan / 2;
                break;
            }

            _dragPopup = new Popup()
            {
                Child = new Rectangle()
                {
                    Height           = splitter.ActualHeight,
                    Width            = splitter.ActualWidth,
                    Fill             = Brushes.Black,
                    Opacity          = Constants.DragOpacity,
                    IsHitTestVisible = false,
                },
                Placement          = PlacementMode.Absolute,
                HorizontalOffset   = pToScreen.X,
                VerticalOffset     = pToScreen.Y,
                AllowsTransparency = true
            };

            DockHelper.ComputeSpliterLocation(_dragPopup, pToScreen, new Size(splitter.ActualWidth, splitter.ActualHeight));
            _dragPopup.IsOpen = true;
        }