コード例 #1
0
        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;
            }
        }
コード例 #2
0
        //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));
        }
コード例 #3
0
 public static IRenderSize Minus(IRenderSize original,
                                 ISize takeAway)
 {
     return(new ValueRenderSize(original.Width - takeAway.Width,
                                original.Height - takeAway.Height, original.Offset));
 }
コード例 #4
0
        //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));
        }
コード例 #5
0
 public static IRenderSize MinusVertical(IRenderSize original,
                                         ISize takeAway)
 {
     return(new ValueRenderSize(Math.Max(original.Width, takeAway.Width),
                                original.Height - takeAway.Height, original.Offset));
 }
コード例 #6
0
 public Boolean Equals(IRenderSize other)
 {
     return(false);
 }
コード例 #7
0
        //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();
        }
コード例 #8
0
 public override ValueSize Measure(IRenderSize availableSpace,
                                   IMeasureContext measureContext)
 {
     return(ValueSize.Empty);
 }
コード例 #9
0
 public override void Arrange(IRenderSize availableSpace,
                              IRenderContext renderContext)
 {
 }
コード例 #10
0
 public ValueRenderRectangle(IPoint2D position,
                             IRenderSize renderSize,
                             Thickness?padding)
     : this(position, renderSize, renderSize.Offset, padding)
 {
 }
コード例 #11
0
 public ValueRenderRectangle(IRenderSize size,
                             Thickness?padding)
     : this(Point2D.Empty, size, size.Offset, padding)
 {
 }
コード例 #12
0
 public override void Arrange(IRenderSize availableSpace,
                              IRenderContext renderContext)
 {
     Debug.WriteLine("arrange test");
     base.Arrange(availableSpace, renderContext);
 }