c# wpf xaml wpf-4.0

c# - ¿WPF Rectangle con diferente grosor de trazo en los lados o Borde con trazo discontinuo?



xaml wpf-4.0 (2)

Prueba esto:

<Border BorderThickness="4,4,4,0" Background="LightGreen"> <Border.BorderBrush> <VisualBrush> <VisualBrush.Visual> <Rectangle Stroke="Green" Fill="LightGreen" StrokeDashArray="4 2" StrokeThickness="4" 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> </Border>

Es un borde, de modo que cuando se coloca dentro de la cuadrícula utilizará el espacio disponible y puede establecer un ancho diferente para cada lado, usa un rectángulo para el pincel visual, de modo que puede establecer fácilmente los bordes en discontinuo.

Sé que puedo crear un borde discontinuo con un rectángulo o un borde con diferente grosor de trazo para diferentes lados:

<StackPanel Orientation="Horizontal"> <Rectangle Stroke="Green" StrokeThickness="2" StrokeDashArray="4 2" Fill="LightGreen" Height="64" Width="32" Margin="5"/> <Border BorderBrush="Green" BorderThickness="2,2,2,0" Background="LightGreen" Height="64" Width="32" Margin="5" /> </StackPanel>

¿Hay de todos modos puedo lograr tanto:

?

ACTUALIZACIÓN: Esto debe llenar el espacio en su padre (a diferencia de mi ejemplo con tamaños fijos), por ejemplo, una cuadrícula, por lo que una DrawingGeometry que tiene tamaños fijos y mi propia pluma no se puede usar para lograr esto ... ¿verdad?


Una solución intrépida, pero funciona, es cubrir el lado del Rectángulo de guiones que desea ocultar:

<Grid Width="100" Height="100"> <Rectangle Stroke="Green" StrokeThickness="4" StrokeDashArray="4 2" Fill="LightGreen" Margin="10"/> <Rectangle StrokeThickness="0" Height="4" Margin="10" VerticalAlignment="Bottom" Fill="LightGreen"/> </Grid>