17

我知道我可以为不同的边创建带有矩形的虚线边框或具有不同笔划粗细的边框:

        <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>

在此处输入图像描述

无论如何我都可以实现:

在此处输入图像描述

?

更新:这需要填充它的父项中的空间(与我的固定大小的示例不同),例如网格 - 所以具有固定大小的 DrawingGeometry 和我自己的笔不能用于实现这一点..可以吗?

4

2 回答 2

25

尝试这个:

<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>

它是边框,所以当放在网格内部时,它将使用可用空间,您可以为每一边设置不同的宽度,它使用矩形作为视觉画笔,因此您可以轻松地将边框设置为虚线。

在此处输入图像描述

于 2013-06-05T07:03:25.133 回答
1

一个 hacky 解决方案,但它的工作原理是覆盖您想要隐藏的虚线矩形的一侧:

            <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>

在此处输入图像描述

于 2013-06-05T06:02:43.990 回答