繁体   English   中英

WPF - 在后面的代码中设置圆角半径

[英]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还具有角半径属性RadiusXRadiusY ,如果这是您想要的,您可以设置它们。

矩形溢出。 如果你对边框做同样的事情,它会起作用。 当您在边框内添加矩形时,您可以看到它在做什么

        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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM