本文整理汇总了C#中AvalonDock.ResizingPanel.InsertChildRelativeTo方法的典型用法代码示例。如果您正苦于以下问题:C# ResizingPanel.InsertChildRelativeTo方法的具体用法?C# ResizingPanel.InsertChildRelativeTo怎么用?C# ResizingPanel.InsertChildRelativeTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AvalonDock.ResizingPanel
的用法示例。
在下文中一共展示了ResizingPanel.InsertChildRelativeTo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Anchor
/// <summary>
/// Anchor a dockable pane (<see cref="DockablePane"/>) to a border of an other dockable pane
/// </summary>
/// <param name="paneToAnchor">Pane to anchor</param>
/// <param name="relativePane">Pane relative</param>
/// <param name="anchor"></param>
public void Anchor(DockablePane paneToAnchor, DockablePane relativePane, AnchorStyle anchor)
{
//ensure that content property is not empty
EnsureContentNotEmpty();
if (anchor == AnchorStyle.None)
anchor = AnchorStyle.Right;
//get a refernce to the resizingpanel container of relativePane
ResizingPanel relativePaneContainer = LogicalTreeHelper.GetParent(relativePane) as ResizingPanel;
Orientation requestedOrientation =
(anchor == AnchorStyle.Bottom || anchor == AnchorStyle.Top) ? Orientation.Vertical : Orientation.Horizontal;
if (relativePaneContainer == null)
{
Debug.Assert(relativePane.Parent == this);
relativePaneContainer = new ResizingPanel();
relativePaneContainer.Orientation = requestedOrientation;
this.Content = relativePaneContainer;
relativePaneContainer.Children.Add(relativePane);
}
Debug.Assert(relativePaneContainer != null, "By now we can't have a pane without a resizing panel containing it");
#region Create and setup container panel
if (relativePaneContainer != null)
{
//check if orientation is right
if (relativePaneContainer.Orientation != requestedOrientation)
{
//if the existing panel is not oriented as we want
//create a new one
ResizingPanel newPanel = new ResizingPanel();
newPanel.Orientation = requestedOrientation;
if (newPanel.Orientation == Orientation.Horizontal)
ResizingPanel.SetResizeHeight(newPanel, ResizingPanel.GetResizeHeight(relativePane));
else
ResizingPanel.SetResizeWidth(newPanel, ResizingPanel.GetResizeWidth(relativePane));
//replace relative pane in its' container panel
//with this new panel
int indexofRelativePane = relativePaneContainer.Children.IndexOf(relativePane);
relativePaneContainer.Children.Remove(relativePane);
relativePaneContainer.Children.Insert(indexofRelativePane, newPanel);
//now we have a panel correctly placed in the tree
newPanel.Children.Add(relativePane);
newPanel.InsertChildRelativeTo(
paneToAnchor, relativePane, anchor == AnchorStyle.Right || anchor == AnchorStyle.Bottom);
relativePaneContainer = newPanel;
}
else
{
if (anchor == AnchorStyle.Left ||
anchor == AnchorStyle.Top)
{
//add new child before first (prepend)
relativePaneContainer.InsertChildRelativeTo(paneToAnchor,
relativePane, false);
}
else
{
//add new child after last (append)
relativePaneContainer.InsertChildRelativeTo(paneToAnchor,
relativePane, true);
}
}
relativePaneContainer.InvalidateMeasure();
}
#endregion
//than set the new anchor style for the pane
paneToAnchor.Anchor = relativePane.Anchor;
if (anchor == AnchorStyle.Left ||
anchor == AnchorStyle.Right)
{
double w = Math.Min(
ResizingPanel.GetEffectiveSize(relativePane).Width / 2.0,
ResizingPanel.GetEffectiveSize(paneToAnchor).Width);
ResizingPanel.SetResizeWidth(paneToAnchor, new GridLength(w, GridUnitType.Pixel));
ResizingPanel.SetResizeHeight(paneToAnchor, new GridLength(1.0, GridUnitType.Star));
}
else
{
double h = Math.Min(
ResizingPanel.GetEffectiveSize(relativePane).Height / 2.0,
ResizingPanel.GetEffectiveSize(paneToAnchor).Height);
ResizingPanel.SetResizeWidth(paneToAnchor, new GridLength(1.0, GridUnitType.Star));
ResizingPanel.SetResizeHeight(paneToAnchor, new GridLength(h, GridUnitType.Pixel));
//.........这里部分代码省略.........