The Rectangle
element has StrokeDashArray
which allows it to be drawn with dashes, but it doesn\'t support rounded corners. The Border
You are mistaken that Rectangle
does not support this:
<Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/>
WPF Border control does not support dashed lines. If you want to apply a dotted/dashed border for a control, you can simply decorate the control with an adorner.
Here is the sample adorner class. This is a generic adorner for any 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);
}
}
I have a simple textblock in my xaml and it is contained in a grid named 'LayoutGrid'.
Now, the border can be applied in the code behind
private void Window_Loaded(object sender, RoutedEventArgs e)
{
AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock));
}