【发布时间】:2017-02-15 05:07:12
【问题描述】:
我以编程方式将具有特定宽度和高度的Border 添加到网格中。但是,我想获得以下任何一项:
- 使边框保持纵横比和填充使其在网格内尽可能大
- 每当网格缩小或放大时使边框缩放(所以不是特别大,更像是网格的百分比)
目前这是我调整窗口大小时的情况:
Color borderColor = (Color)ColorConverter.ConvertFromString(BorderColor);
Color backgroundColor = (Color)ColorConverter.ConvertFromString(BackgroundColor);
Border border = new Border();
border.BorderThickness = new Thickness(BorderSize);
border.CornerRadius = new CornerRadius(TopLeftCornerRadius, TopRightCornerRadius, BottomRightCornerRadius, BottomLeftCornerRadius);
border.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom(BorderColor));
border.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom(BackgroundColor));
border.Width = Width;
border.Height = Height;
border.Margin = new Thickness(10);
previewgrid.Children.Add(border);
正常情况:
规模化情况:
所以我希望它能够正确调整大小并保持在白色矩形内。顺便说一句,如您所见,白色网格有一个边距;-) 提前致谢!
【问题讨论】:
-
您需要将网格分成 3 列:第一个和最后一个“Auto”,中间是“*”。中间是矩形,两侧是边框。
-
或者ViewBox可以帮助你达到目标
-
@lerthe61 确实看过,但不知道到底是怎么回事
-
previewcanvas是画布吗? -
@Derp 你可以试试这样: var viewBox = new Viewbox(); viewBox.Child = 边框; previewgrid.Children.Add(viewBox);