private void Body_LayoutUpdated(object sender, EventArgs e) { Point vl2 = OutAnchorL.TransformToVisual(OutLayout).Transform(new Point()); Point vr2 = OutAnchorR.TransformToVisual(OutLayout).Transform(new Point()); VerticalL.X1 = VerticalL.X2 = 0; VerticalL.Y2 = vl2.Y; VerticalR.X1 = VerticalR.X2 = Body.ActualWidth; VerticalR.Y2 = vr2.Y; HorizentalL.X1 = 0; HorizentalR.X2 = VerticalR.X1; }
private void Placer_LayoutUpdated(object sender, EventArgs e) { if (_state == ElementState.Open) { Point left = OutAnchorL.TransformToVisual(Layout).Transform(new Point()); Point right = OutAnchorR.TransformToVisual(Layout).Transform(new Point()); for (int i = 0; i < Placer.Children.Count; i++) { UIElement ue = Placer.Children[i]; if (ue is IElement) { IElement element = ue as IElement; Point lp = element.LeftAnchor.TransformToVisual(Layout).Transform(new Point()); Point rp = element.RightAnchor.TransformToVisual(Layout).Transform(new Point()); LinkLine lline = Lines.Children[i * 2] as LinkLine; LinkLine rline = Lines.Children[i * 2 + 1] as LinkLine; lline.SetPosition(left.X + OutAnchorL.Width, left.Y, lp.X + (element.LeftAnchor as Rectangle).Width, lp.Y, left.X + OutAnchorL.Width + 10); rline.SetPosition(rp.X, rp.Y, right.X, right.Y, right.X - 10); } } } }