示例#1
0
        internal void SplitterMoved(DockSplitter dockSplitter, double deltaX, double deltaY)
        {
            if (deltaX != 0 || deltaY != 0)
            {
                switch (dockSplitter.Orientation)
                {
                case DockSplitter.Orientations.Horizontal:
                    switch (dockSplitter.DockPosition)
                    {
                    case System.Windows.Controls.Dock.Bottom:
                        Height = Math.Max(MinimumWindowSize.Height, ActualHeight + deltaY);
                        break;

                    case System.Windows.Controls.Dock.Top:
                        Height = Math.Max(MinimumWindowSize.Height, ActualHeight - deltaY);
                        Top    = Math.Max(0, Top + deltaY);
                        break;

                    default:
                        throw new NotImplementedException();
                    }
                    break;

                case DockSplitter.Orientations.NE:
                    Height = Math.Max(MinimumWindowSize.Height, ActualHeight - deltaY);
                    Top    = Math.Max(0, Top + deltaY);
                    Width  = Math.Max(MinimumWindowSize.Width, ActualWidth + deltaX);
                    break;

                case DockSplitter.Orientations.NW:
                    Height = Math.Max(MinimumWindowSize.Height, ActualHeight - deltaY);
                    Top    = Math.Max(0, Top + deltaY);
                    Width  = Math.Max(MinimumWindowSize.Width, ActualWidth - deltaX);
                    Left   = Math.Max(0, Left + deltaX);
                    break;

                case DockSplitter.Orientations.SE:
                    Height = Math.Max(MinimumWindowSize.Height, ActualHeight + deltaY);
                    Width  = Math.Max(MinimumWindowSize.Width, ActualWidth + deltaX);
                    break;

                case DockSplitter.Orientations.SW:
                    Height = Math.Max(MinimumWindowSize.Height, ActualHeight + deltaY);
                    Width  = Math.Max(MinimumWindowSize.Width, ActualWidth - deltaX);
                    Left   = Math.Max(0, Left + deltaX);
                    break;

                case DockSplitter.Orientations.Vertical:
                    switch (dockSplitter.DockPosition)
                    {
                    case System.Windows.Controls.Dock.Left:
                        Width = Math.Max(MinimumWindowSize.Width, ActualWidth - deltaX);
                        Left  = Math.Max(0, Left + deltaX);
                        break;

                    case System.Windows.Controls.Dock.Right:
                        Width = Math.Max(MinimumWindowSize.Width, ActualWidth + deltaX);
                        break;

                    default:
                        throw new NotImplementedException();
                    }
                    break;

                default:
                    break;
                }
            }
        }
示例#2
0
 internal void SplitterDragStart(DockSplitter dockSplitter)
 {
 }