tutorial que español ejemplos custom control c# wpf xaml wpf-controls

c# - que - ¿Cómo creo un borde discontinuo con esquinas redondeadas en WPF?



xaml c# (2)

El elemento Rectangle tiene StrokeDashArray que permite que se StrokeDashArray con guiones, pero no admite esquinas redondeadas. El control Border admite lindas líneas gruesas con esquinas redondeadas, pero solo dibujará líneas continuas.

¿Cuál es la mejor manera de lograr un borde discontinuo con esquinas redondeadas, con algún control?

Ejemplo de borde discontinuo http://img524.imageshack.us/img524/3186/dashedborder.png


El control de borde WPF no admite líneas punteadas. Si desea aplicar un borde punteado / discontinuo para un control, simplemente puede decorar el control con un adorno.

Aquí está la clase de muestra adorner. Este es un adorno genérico para cualquier elemento de UI.

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); } }

Tengo un simple bloque de texto en mi xaml y está contenido en una grilla llamada ''LayoutGrid''.

Ahora, el borde se puede aplicar en el código detrás

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


Estás equivocado de que Rectangle no es compatible con esto:

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