private void AddToLeft(IBTabControl tc2) { if (P1 == null) { P1 = new IBPanel(); P1.Children.Add(tc2); P1.TC = tc2; } else { P1.RemoveFromParent(); } if (P2 == null) { P2 = new IBPanel(); P2.Children.Add(TC); P2.TC = TC; } else { P2.RemoveFromParent(); } ColumnDefinition newColumn1 = new ColumnDefinition() { Width = new GridLength(200, GridUnitType.Pixel), MinWidth = 50.0 }; ColumnDefinition newColumn2 = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star), MinWidth = 50.0 }; ColumnDefinitions.Add(newColumn1); ColumnDefinitions.Add(newColumn2); P1.CurrentPos = Position.left; P1.SetColumnRow(); PS.Height = double.NaN; PS.Margin = new Thickness(-3, 0, 0, 0); PS.VerticalAlignment = VerticalAlignment.Stretch; PS.HorizontalAlignment = HorizontalAlignment.Left; PS.SetValue(ColumnProperty, 1); P2.CurrentPos = Position.right; P2.SetColumnRow(); Children.Add(P1); Children.Add(PS); Children.Add(P2); }
private void Border_Drop(object sender, DragEventArgs e) { IsDropping = false; if (e.Data.GetData(typeof(IBTabItem)) == null) { return; } IBTabItem ti = e.Data.GetData(typeof(IBTabItem)) as IBTabItem; if (ti == null) { throw new IBLayoutException("ドロップされたパネルを取得できません"); } if (!ti.AllowDropToAnother) { return; } IBPanel parentPanel = Parent as IBPanel; if (parentPanel == null) { throw new IBLayoutException("IBPanelSplitter の親が IBPanel でありません"); } IBWorkspace Workspace = parentPanel.GetVisualParent() as IBWorkspace; if (Workspace == null) { throw new IBLayoutException("IBWorkspace を取得できません"); } IBTabControl parent_ti = ti.Parent as IBTabControl; if (parent_ti == null) { throw new IBLayoutException("IBTabItem の親が IBTabControl でありません"); } IBPanel parent_parent_ti = parent_ti.Parent as IBPanel; if (parent_parent_ti == null) { throw new IBLayoutException("IBTabControl の親が IBPanel でありません"); } if (parentPanel == parent_parent_ti && parent_ti.Items.Count == 1) { return; } IBTabControl tc2 = new IBTabControl(); IBPanel p = new IBPanel(); IBPanel p1 = new IBPanel(); p1 = Workspace.Content as IBPanel; p1.RemoveFromParent(); p.Children.Add(p1); ti.RemoveFromParent(); tc2.Items.Add(ti); if (HorizontalAlignment == HorizontalAlignment.Left) { p.P2 = p1; p.CurrentPos = p1.CurrentPos; p.AddIBTabControl(tc2, Position.left); Workspace.Content = p; } else if (HorizontalAlignment == HorizontalAlignment.Right) { p.P1 = p1; p.CurrentPos = p1.CurrentPos; p.AddIBTabControl(tc2, Position.right); Workspace.Content = p; } else if (VerticalAlignment == VerticalAlignment.Top) { p.P2 = p1; p.CurrentPos = p1.CurrentPos; p.AddIBTabControl(tc2, Position.top); Workspace.Content = p; } else if (VerticalAlignment == VerticalAlignment.Bottom) { p.P1 = p1; p.CurrentPos = p1.CurrentPos; p.AddIBTabControl(tc2, Position.bottom); Workspace.Content = p; } if (parent_ti.Items.Count == 0) { parent_parent_ti.RemoveIBPanel(); } }