Example #1
0
        void ChangeSize(double delta)
        {
            // delta = difference in pixels

            if (delta < -originalPixelSize1)
            {
                delta = -originalPixelSize1;
            }
            if (delta > originalPixelSize2)
            {
                delta = originalPixelSize2;
            }

            // replace Auto lengths with absolute lengths if necessary
            if (original1.IsAuto)
            {
                original1 = new GridLength(originalPixelSize1);
            }
            if (original2.IsAuto)
            {
                original2 = new GridLength(originalPixelSize2);
            }

            GridLength new1;

            if (original1.IsStar && originalPixelSize1 > 0)
            {
                new1 = new GridLength(original1.Value * (originalPixelSize1 + delta) / originalPixelSize1, GridUnitType.Star);
            }
            else
            {
                new1 = new GridLength(originalPixelSize1 + delta);
            }
            GridLength new2;

            if (original2.IsStar && originalPixelSize2 > 0)
            {
                new2 = new GridLength(original2.Value * (originalPixelSize2 - delta) / originalPixelSize2, GridUnitType.Star);
            }
            else
            {
                new2 = new GridLength(originalPixelSize2 - delta);
            }
            firstRow.Properties[RowColumnSizeProperty].SetValue(new1);
            secondRow.Properties[RowColumnSizeProperty].SetValue(new2);
            UIElement e = ((UIElement)VisualTreeHelper.GetParent(this));

            e.InvalidateArrange();
            rail.InvalidateVisual();
        }