wpf styles border listviewitem

¿Cómo puedo lograr un borde discontinuo o punteado en WPF?



styles border (3)

Tengo un ListViewItem que estoy aplicando un Style y me gustaría poner una línea gris punteada como el Border inferior.

¿Cómo puedo hacer esto en WPF? Solo puedo ver pinceles de color sólido.


Esto funcionó muy bien en nuestra aplicación, lo que nos permite usar un borde real y no perder el tiempo con rectángulos:

<Border BorderThickness="1,0,1,1"> <Border.BorderBrush> <DrawingBrush Viewport="0,0,8,8" ViewportUnits="Absolute" TileMode="Tile"> <DrawingBrush.Drawing> <DrawingGroup> <GeometryDrawing Brush="Black"> <GeometryDrawing.Geometry> <GeometryGroup> <RectangleGeometry Rect="0,0,50,50" /> <RectangleGeometry Rect="50,50,50,50" /> </GeometryGroup> </GeometryDrawing.Geometry> </GeometryDrawing> </DrawingGroup> </DrawingBrush.Drawing> </DrawingBrush> </Border.BorderBrush> <TextBlock Text="Content Goes Here!" Margin="5"/> </Border>

Tenga en cuenta que la ventana gráfica determina el tamaño de los guiones en las líneas. En este caso, genera guiones de ocho píxeles. Viewport = "0,0,4,4" le daría guiones de cuatro píxeles.


Puede crear una línea punteada o guiones usando un rectángulo como en el siguiente código

<Rectangle Stroke="#FF000000" Height="1" StrokeThickness="1" StrokeDashArray="4 4" SnapsToDevicePixels="True"/>

Comience con esto y personalice su lista de acuerdo a su escenario


Un poco tarde para la fiesta, pero la siguiente solución funcionó para mí. Es ligeramente más simple / mejor que las otras dos soluciones:

<Border BorderThickness="1"> <Border.BorderBrush> <VisualBrush> <VisualBrush.Visual> <Rectangle StrokeDashArray="4 2" Stroke="Gray" StrokeThickness="1" Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}" Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}"/> </VisualBrush.Visual> </VisualBrush> </Border.BorderBrush> <TextBlock Text="Whatever" /> </Border>