private void PaneSplitter_OnEndDrag(bool abort) { if (abort) { return; } Point pt = m_splitterLocation; Rectangle rect = GetPaneSplitterDragRectangle(); DockPaneSplitter splitter = DragControl as DockPaneSplitter; DockPane pane = splitter.DockPane; NestedDockingStatus status = pane.NestedDockingStatus; double proportion = status.Proportion; if (status.LogicalBounds.Width <= 0 || status.LogicalBounds.Height <= 0) { return; } else if (status.DisplayingAlignment == DockAlignment.Left) { proportion += ((double)rect.X - (double)pt.X) / (double)status.LogicalBounds.Width; } else if (status.DisplayingAlignment == DockAlignment.Right) { proportion -= ((double)rect.X - (double)pt.X) / (double)status.LogicalBounds.Width; } else if (status.DisplayingAlignment == DockAlignment.Top) { proportion += ((double)rect.Y - (double)pt.Y) / (double)status.LogicalBounds.Height; } else { proportion -= ((double)rect.Y - (double)pt.Y) / (double)status.LogicalBounds.Height; } pane.SetNestedDockingProportion(proportion); }