public void Pos(View view, double x, RelativePosition xRel, double y, RelativePosition yRel, double width, RelativePosition widthRel, double height, RelativePosition heightRel) { Position p = new Position(x, xRel, y, yRel, width, widthRel, height, heightRel); Rectangle r = p.GetRectangle(); //AbsoluteLayout.SetLayoutBounds((View)view, r); if (view is INukeView) { INukeView nuke = (INukeView)view; nuke.Position = p; } else { if (positions.ContainsKey(view)) { positions[view] = p; } else { positions.Add(view, p); } if (view is Layout <View> ) { view.SizeChanged += view_SizeChanged; } } }
private void UpdateLayout(Layout <View> layout) { for (int i = 0; i < layout.Children.Count; i++) { View v = layout.Children[i]; if (v is INukeView) { INukeView nuke = (INukeView)v; PositionElement(v, nuke); } else { Position p; if (positions.TryGetValue(v, out p)) { PositionElement(v, p); } } if (v is Layout <View> ) { Layout <View> l = (Layout <View>)v; UpdateLayout(l); } } }
private void PositionElement(View v, INukeView p) { //AbsoluteLayout.SetLayoutBounds(v, // new Rectangle( // Position.GetValue(p.X, p.XRel), // Position.GetValue(p.Y, p.YRel), // Position.GetValue(p.Width, p.WidthRel), // Position.GetValue(p.Height, p.HeightRel))); if (v is Layout <View> ) { UpdateLayout((Layout <View>)v); } }