[英]WPF - Setting corner radius in code behind
我想为我的 WPF 页面带来一些矩形,这些矩形应该有圆角。 为了将一些矩形带到页面上,而不必在 xaml 中编写每个矩形,我决定在代码中使用循环。 我试过这个:
for (int i = 0; i < 5; i++)
{
Rectangle rect = new Rectangle();
rect.Fill = System.Windows.Media.Brushes.Green;
var style = new Style(typeof(Border));
style.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(12.0, 0, 0 , 0)));
rect.Resources.Add(typeof(Border), style);
Grid.SetColumn(rect, 1);
Grid.SetRow(rect, 1);
mainGrid.Children.Add(rect);
}
但我的矩形的角半径不会改变。 你有什么建议吗?
提前感谢您的帮助!
将一些矩形带到页面上,而不必在 xaml 中写下每一个矩形
好问题要解决。
我决定用代码中的循环来做
绝对糟糕的解决方案。 使用正确的 MVVM 和<ItemsControl>
绑定到您尝试显示的对象列表,存储在您的视图 model 中。 然后创建一个全局样式表并自动或手动将其应用于此。
无论如何要回答您的问题,您要在Border
上创建一个未命名的样式并将其应用于Rectangle
。 这永远不会自动应用,而且是好事,因为您引用了Rectangle
上不存在的Border.CornerRadiusProperty
。
您想要让您的样式覆盖Rectangle
的模板并在其周围添加一个Border
,然后设置其角边框半径,或者手动在矩形上方添加边框并在您的设置器中设置其角半径(仅将样式添加到Border
的资源)。
不过,您的代码对我来说并没有真正意义, Rectangle
还具有角半径属性RadiusX
和RadiusY
,如果这是您想要的,您可以设置它们。
矩形溢出。 如果你对边框做同样的事情,它会起作用。 当您在边框内添加矩形时,您可以看到它在做什么
Rectangle rect = new Rectangle();
rect.Fill = System.Windows.Media.Brushes.Green;
Border b = new Border();
b.Width = 100;
b.Height = 100;
b.Background = Brushes.White;
b.CornerRadius= new CornerRadius(12, 0, 0, 0);
b.BorderThickness = new Thickness(2);
b.BorderBrush = Brushes.Red;
b.Child = rect;//adding this rectangle will show you how the corner is overflowing
grid_Main.Children.Add(b);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.