public override void Arrange(IRenderSize availableSpace, IRenderContext renderContext) { var rowNumbers = _controls.Keys.ToArray(); var targetRect = new RenderRectangle(0, 0, 1, 1, availableSpace.Offset); foreach (var rowNumber in rowNumbers) { var sizeRow = _sizes[rowNumber]; var row = _controls[rowNumber]; var h = sizeRow.Max(r => r.Height); for (var c = 0; c < row.Count; c++) { var w = _columnWidths[c]; var child = row[c]; targetRect.Width = w; targetRect.Height = h; renderContext.DrawElement(child, targetRect); targetRect.X += w; } targetRect.Y += h; } }
//protected override Boolean OnDataContextChanging(Object? oldValue, // Object? newValue) //{ // return base.OnDataContextChanging(oldValue, newValue); //} //protected override void OnDataContextChanged(Object? newValue) //{ // base.OnDataContextChanged(newValue); //} //public override void Dispose() //{ //} public override ValueSize Measure(IRenderSize availableSpace, IMeasureContext measureContext) { var rowNumbers = _controls.Keys.ToArray(); var remainingSize = new RenderSize(availableSpace.Width, availableSpace.Height); foreach (var rowNumber in rowNumbers) { var sizeRow = _sizes[rowNumber]; sizeRow.Clear(); var currentRowHeight = 0.0; remainingSize.Width = availableSpace.Width; var row = _controls[rowNumber]; for (var c = 0; c < row.Count; c++) { var ctrlSize = row[c].Measure(remainingSize, measureContext); if (ctrlSize.Width > _columnWidths[c]) { _columnWidths[c] = ctrlSize.Width; } remainingSize.Width -= ctrlSize.Width; currentRowHeight = Math.Max(currentRowHeight, ctrlSize.Height); sizeRow.Add(ctrlSize); } remainingSize.Height -= currentRowHeight; } var widthNeeded = _columnWidths.Values.Sum(w => w); var heightNeeded = availableSpace.Height - remainingSize.Height; return(new ValueSize(widthNeeded, heightNeeded)); }
public static IRenderSize Minus(IRenderSize original, ISize takeAway) { return(new ValueRenderSize(original.Width - takeAway.Width, original.Height - takeAway.Height, original.Offset)); }
//public static ISize Reduce(ISize size, // Thickness margin) //{ // if (margin == null) // return size.DeepCopy(); // return new ValueSize(size.Width - (margin.Left + margin.Right), // size.Height - (margin.Top + margin.Bottom)); //} //public static IRenderSize Reduce(IRenderSize size, // Thickness margin) //{ // if (margin == null) // return size.DeepCopy(); // return new ValueRenderSize(size.Width - (margin.Left + margin.Right), // size.Height - (margin.Top + margin.Bottom), size.Offset); //} public static ValueSize ToValueSize(IRenderSize rect) { return(new ValueSize(rect.Width, rect.Height)); }
public static IRenderSize MinusVertical(IRenderSize original, ISize takeAway) { return(new ValueRenderSize(Math.Max(original.Width, takeAway.Width), original.Height - takeAway.Height, original.Offset)); }
public Boolean Equals(IRenderSize other) { return(false); }
//public new IRenderSize Minus(ISize subtract) //{ // return GeometryHelper.Minus(this, subtract); //} //public new IRenderSize DeepCopy() //{ // return new ValueRenderSize(Width, Height, Offset); //} public Boolean Equals(IRenderSize other) { throw new NotImplementedException(); }
public override ValueSize Measure(IRenderSize availableSpace, IMeasureContext measureContext) { return(ValueSize.Empty); }
public override void Arrange(IRenderSize availableSpace, IRenderContext renderContext) { }
public ValueRenderRectangle(IPoint2D position, IRenderSize renderSize, Thickness?padding) : this(position, renderSize, renderSize.Offset, padding) { }
public ValueRenderRectangle(IRenderSize size, Thickness?padding) : this(Point2D.Empty, size, size.Offset, padding) { }
public override void Arrange(IRenderSize availableSpace, IRenderContext renderContext) { Debug.WriteLine("arrange test"); base.Arrange(availableSpace, renderContext); }