C# 如何在WPF中创建带圆角的虚线边框?

C# 如何在WPF中创建带圆角的虚线边框?,c#,wpf,xaml,wpf-controls,C#,Wpf,Xaml,Wpf Controls,Rectangle元素具有StrokeDashArray,允许使用破折号绘制,但不支持圆角。边框控件支持带圆角的粗线条,但只绘制实线 使用任何控件实现圆角虚线边框的最佳方法是什么 您错误地认为矩形不支持此功能: <Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/> WPF边框控件不支持虚线。 如果要为控件应用虚线/虚线边框,只

Rectangle
元素具有
StrokeDashArray
,允许使用破折号绘制,但不支持圆角。
边框
控件支持带圆角的粗线条,但只绘制实线

使用任何控件实现圆角虚线边框的最佳方法是什么


您错误地认为
矩形
不支持此功能:

<Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/>


WPF边框控件不支持虚线。 如果要为控件应用虚线/虚线边框,只需使用装饰器装饰控件即可

下面是示例装饰器类。这是任何UIelement的通用装饰器

class DottedLineAdorner : Adorner
{
    public UIElement AdornedElement { get; set; }

    public DottedLineAdorner(UIElement adornedElement) : base(adornedElement)
    {
        AdornedElement = adornedElement;
    }

    protected override void OnRender(DrawingContext drawingContext)
    {
        Size eltSize = (AdornedElement as FrameworkElement).DesiredSize;
        Pen pen = new Pen(Brushes.Blue, 2) { DashStyle = DashStyles.DashDot };
        drawingContext.DrawRoundedRectangle(null, pen, new Rect(0, 0, eltSize.Width, eltSize.Height), 10, 10);
    }
}
我在xaml中有一个简单的文本块,它包含在一个名为“LayoutGrid”的网格中

现在,边界可以应用于代码隐藏中

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock));
    }

您的图像链接似乎已断开。如果您仍然拥有原始图像,请将其重新加载到stack.imgur,或者编辑您的答案,使其在没有图像的情况下工作。谢谢